批处理使用字符串作为活动控制台命令

时间:2018-02-26 09:46:59

标签: batch-file cmd console windows-scripting

我的麻烦是从test.txt读取一个字符串并将其作为控制台命令输入。

实施例: 要求用户提供其沙箱文件夹的路径,同时在控制台中提供(已保存的test.txt),仅等待用户按ENTER键

Path to your sandboxes folder: C:\Whatever\Path\Sandboxes

其中Path to your sandboxes folder:是等待输入的脚本中set /p命令的一部分;并且脚本已将C:\Whatever\Path\Sandboxes键入为预先提供的路径。从这里开始,如果对提供的路径感到满意或者编辑它,用户可以按ENTER键:C:\Whatever\OtherPath\Sandcastles

我假设,第一步是从test.txt读取变量,但我该如何从那里继续?如何在控制台中键入此字符串变量的字符?

2 个答案:

答案 0 :(得分:1)

将其与cscript结合使用。

@if (@CodeSection == @Batch) @then

@echo off
for /f "tokens=* delims=" %%i in (test.txt) do set "output=%%I"
  CScript //nologo //E:JScript "%~F0" "%output%"
  set /P "var=Path to your sandboxes folder: "
  echo selected path = %var%
  goto :EOF

@end

WScript.CreateObject("WScript.Shell").SendKeys(WScript.Arguments(0));

答案 1 :(得分:-2)

如果在所述test.txt中第一行只包含默认路径,则可以使用:

SET /P _path=<test.txt
SET /P _path=%_path%

这是实现此目的的最快方法,但它仅适用于第1行(read more)。

如果是在第3行使用:

FOR /F "skip=2 delims=" %%G IN ("C:\adjust\path\test.txt") DO (SET "_path=%%G" & GOTO break)
:break

SET /P _path=%_path%

对于第5行更改skip=2skip=4,第17行更改为skip=16;基本上如果路径在行n中,您想要跳过n-1行。

您也可以使用FINDSTR,但只要知道test.txt中路径的位置,这就是必要的。