在 DOS 6.22 中创建提示用户输入文件路径的批处理文件
Posted
技术标签:
【中文标题】在 DOS 6.22 中创建提示用户输入文件路径的批处理文件【英文标题】:Create Batch File that prompts user for File path in DOS 6.22 【发布时间】:2018-04-22 18:30:01 【问题描述】:我正在尝试在 DOS 6.22 中创建一个 .BAT 文件,它将 A: 中的软盘内容复制到 C:\,然后将创建的文件夹设置为系统变量。我尝试使用类似 "SET /P VARIABLE=Enter a path" 之类的东西,但是 DOS 只会将 "/P VARIABLE" 添加为值为 "Enter a path" 的变量,因此使用 /P 是'不是一个选项,因为 /P 不是 DOS 6.22 中的开关
我尝试使用 for 循环之类的东西为文件设置一个变量,但是我遇到减速带的地方是我不知道在驱动器 A:\ 中将调用什么文件夹,因为它会改变所有时间但只包含一个文件夹,所以基本上我只是想找到一种方法将驱动器 A 中的第一个目录复制到 C:\ 并将其设置为系统变量。一旦用户完成更改,我将不得不将该文件夹复制回 A:\ 并覆盖旧文件,以便在进行更改后将其存储在网络上。
我确实尝试过通过 .BAT 文件尝试一些 If/for 语句,但我对这些论文的运气并不好,如果有人能指出我正确的方向,那就太棒了。
在这一点上,我可能会让这种方式变得比我必须做的更复杂。
【问题讨论】:
In Windows cmd, how do I prompt for user input and use the result in another command?的可能重复 @WaiHaLee,他们特别说他们使用的是 DOS 6.22。SET /P
命令在 DOS 6.22 中不起作用。
@WaiHaLee 肯定不是 .DOS (command.com
) 比 Windows 命令提示符 (cmd.exe
) 更原始的方式。此外,thegiancat 已经尝试过,但没有成功。
这里是一个在dos中获取用户输入的教程。 robvanderwoude.com/userinput.php#DOS
在这个时代你需要使用 DOS 有什么特别的原因吗?用起来比cmd.exe还要痛苦
【参考方案1】:
这样的东西也应该起作用:
@echo off
:INPUT.BAT puts what is typed next in environment variable INPUT
set input=
echo INPUT.BAT
echo Type in something and press [Enter]
fc con nul /lb1 /n|date|find " 1: ">temptemp.bat
echo :Loop>>enter.bat
echo if not (%%input%%)==() set input=%%input%% %%5>>enter.bat
echo if (%%input%%)==() set input=%%5>>enter.bat
echo shift>>enter.bat
echo if not (%%5)==() goto Loop>>enter.bat
for %%x in (call del) do %%x temptemp.bat
del enter.bat
echo The string you just entered:
echo %input%
echo has been stored in an environment variable named INPUT
:End
【讨论】:
【参考方案2】:在对@Squashman 链接的内容进行了更多研究后,我最终找到了解决方案。结果发现通信出现故障,这甚至不是用户遇到的原始问题(一种从 A:\ 复制文件的简单方法以及所有这些)
我使用了以下内容。
echo Type "set myvar="name of the folder" replacing name of the folder with
echo the name of the folder containing the files on A:\ example if you were
echo on "example" you would type: set myvar=example
copy con answer.bat
echo Type the words "set myvar=" (don't type the quote marks)
echo and then immediately after the = sign, press Control-Z then enter
call answer.bat
mkdir C:\%myvar%
xcopy A:\%mvar% C:\%myvar%
DEL answer.bat
这是我在此处找到的指南的修改版本。 http://www.pement.org/sed/bat_env.htm#4dos
希望这能够对某人有所帮助,尽管想象起来并不漂亮,但它确实有效。
【讨论】:
他们似乎更容易输入myscript dirname
。【参考方案3】:
如果您的用户实际上只需要复制一个目录,我认为这对您的用户来说会更容易。
@echo off
if "%1" == "" goto syntax
md C:\%1
xcopy/E A:\%1 C:\%1
goto end
:syntax
echo Please input a directory after %0
:end
【讨论】:
以上是关于在 DOS 6.22 中创建提示用户输入文件路径的批处理文件的主要内容,如果未能解决你的问题,请参考以下文章
在 DOS 6.22 批处理文件中忽略 IF EXIST ELSE 的问题