1

我用以下命令创建了一个 txt 文件。

cd..
cd <Folder location>
del *_extract.txt /Q

现在,我想创建一个批处理文件,该文件将打开 cmd 并执行文本文件中提到的命令。我创建的批处理文件有以下内容

@echo off
start "clear" cmd.exe -m <textfilelocation>
4

2 回答 2

1

最简单的方法就像斯蒂芬在评论中所说的那样。将文件从 重命名.txt.cmd.bat。然后你可以自己运行它,或者简单地call从你的其他批处理文件中运行它:

call "C:\Some Location\file.cmd"

如果你真的想保留 txt 文件,那么运行一个 for 循环:

@echo off
for /f "usebackq delims=" %%i in ("C:\Some path\file.txt") do %%i

考虑一个带有注释的文本文件,在这种情况下使用#(这是一个非批处理文件标准)我们可以执行不是注释的行。

@echo off
for /f "delims=" %%i in ('type "C:\Some Path\file.txt" ^| findstr /v "#"') do %%i
于 2020-10-12T07:38:40.150 回答
1

最好的选择是将文件重命名为.bat.cmd(或制作(临时)副本)。

由于某种原因,它必须是一个.txt文件,您的选择非常有限。

除了 Gerhards 的建议(带有for循环的那个),一个可能更好的选择是将文本文件的行“输入”到cmd(不推荐;仅出于学术原因提供):

<script.txt %comspec% 

或没有命令重复和标题:

<script.txt %comspec% /q /k

笔记:

  • script.txt 中的行必须是命令行语法(例如for %a ...,不是批处理文件语法for %%a ...
  • GOTO并且CALL :label不会工作(它们不能在命令行上工作)
  • “多行”for命令有效,但More?每行都会提示您的输出(不可抑制)。
  • 如果需要延迟扩展,则需要在命令中添加/v:on开关cmdsetlocal *对命令行没有影响)

示例- script.txt

echo off
echo/
:start [ignored]
echo hello %username%
ping -n 1 www.google.com | find "TTL="
for %a in (alpha beta) do (
  echo %a
)
goto :start [ignored]
echo done.

输出:

hello Stephan
Antwort von 172.217.21.206: Bytes=32 Zeit=12ms TTL=121
Mehr? Mehr? alpha
beta
done.
于 2020-10-12T19:47:36.897 回答