如何使批处理文件在显示正在编辑的内容时以用户想要的方式编辑文本文件?

Posted

技术标签:

【中文标题】如何使批处理文件在显示正在编辑的内容时以用户想要的方式编辑文本文件?【英文标题】:How to make a Batch File edit a text file how a user wants while displaying what is being edited? 【发布时间】:2012-12-09 02:46:05 【问题描述】:

我目前正在创建一个带有批处理文件的文字处理软件。我想知道是否有人知道如何在屏幕上显示文本,以便用户可以编辑它。我已经有一个用于创建、查看和删除文件的系统,但是编辑现有文件让我很难过。这是批处理文件的代码:

@echo off
title Word Processor
:MAIN
cls
echo Type help for help
set /p input=Command-
if %input%==view goto view
if %input%==new goto new
if %input%==exit exit
if %input%==edit goto edit
if %input%==help goto help
if %input%==delete goto delete
:new
cls
set /p words=Type-
set /p name=Name-
echo %words% >> %name%.txt
pause >nul
goto MAIN
:view
cls
set /p file=File to open (without .txt)-
cls
type %file%.txt
pause >nul
goto MAIN
:help
cls
type help.txt
pause >nul
goto MAIN
:edit
cls
echo Not Yet Implemented
pause >nul
exit
:delete
cls
set /p del=File to Delete-
del %del%.txt
echo Deleted...
pause >nul
goto MAIN

【问题讨论】:

为什么不用记事本打开呢? 因为我希望整个体验都在批处理文件中,所以您不会用记事本打开 Word 文档吧?我希望用户能够对选择的文本文件做任何需要的事情。 您需要一个文本编辑程序。在过去的 DOS 时代,您使用“edlin”。在 Windows 中,最基本的文本编辑器是记事本。我认为您需要更多地了解操作系统的工作原理。 我知道记事本是最基本的文本编辑器。我用记事本。我正在尝试制作自己的文本编辑器,因为我认为它可能很酷。我了解 Windows 等操作系统的工作原理。我想知道一个批处理文件到底能做多少,即使是在另一种脚本语言的帮助下。我什至从批处理文件中创建了一个操作系统(有点),它工作得很好,所以这样做的目的是为我的操作系统添加一个文本编辑器。谢谢你,晚安。 【参考方案1】:

您可以在 VBScript 的帮助下完成此操作。

VBScript 看起来像这样

Set WshShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(WScript.Arguments(0), 1)
Do Until objFile.AtEndOfStream
    strCharacters = objFile.Read(1)
    WshShell.SendKeys strCharacters
Loop

将其保存为send.vbs,批处理文件的编辑部分将如下所示

set /p file=File to edit-
cscript.exe rep.vbs %file%
set /p input=
echo %input% >%file%

基本上,您会得到要编辑的文件,然后以该文件作为参数调用 VBScript。批处理文件然后落入下一行,这是另一个正在等待输入的set /p

然后当 VBScript 运行时,它会读取您选择的文件并通过SendKeys 发送字符,这就像模拟击键一样。

这些字符最终会被粘贴到控制台上,因此您可以随意编辑它。当您按下回车键时,编辑将保存到变量中,并用新的编辑覆盖文件。

您也可以使用 cmd 的内置文本编辑器 edit,它有一个用户可以用来编辑和保存文件的 gui。

只需输入editedit %file% 即可使用它。

希望对你有帮助

【讨论】:

当它编辑文件时,它不会显示原始文件所说的内容。这与使用我的“新”部分保存具有相同名称的文件相同,这将覆盖以前的文件。这很有帮助,但是它如何显示原始文件中的文字,并让您使用屏幕上的界面对其进行编辑?【参考方案2】:

试试这个:

编辑文件.txt

这也许是你想要的

这是一个16位的程序,几乎和记事本一模一样

【讨论】:

以上是关于如何使批处理文件在显示正在编辑的内容时以用户想要的方式编辑文本文件?的主要内容,如果未能解决你的问题,请参考以下文章

我如何使网格包装器匹配项目的宽度?

在 Rails 中使用嵌套表单 - 如何使显示页面根据用户想要的呈现数量以表格格式显示每个新条目?

在word中怎么使正在编辑的信息永远处于页面最顶端?

防止在外部单击时以弹出模式关闭单元格编辑器

如何使浏览器显示“另存为对话框”,以便用户可以将字符串的内容保存到他系统上的文件中?

当用户单击正确答案时,如何使 quizView 以绿色 onTapGesture 显示