我用以下命令创建了一个 txt 文件。
cd..
cd <Folder location>
del *_extract.txt /Q
现在,我想创建一个批处理文件,该文件将打开 cmd 并执行文本文件中提到的命令。我创建的批处理文件有以下内容
@echo off
start "clear" cmd.exe -m <textfilelocation>
我用以下命令创建了一个 txt 文件。
cd..
cd <Folder location>
del *_extract.txt /Q
现在,我想创建一个批处理文件,该文件将打开 cmd 并执行文本文件中提到的命令。我创建的批处理文件有以下内容
@echo off
start "clear" cmd.exe -m <textfilelocation>
最简单的方法就像斯蒂芬在评论中所说的那样。将文件从 重命名.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
最好的选择是将文件重命名为.bat
或.cmd
(或制作(临时)副本)。
由于某种原因,它必须是一个.txt
文件,您的选择非常有限。
除了 Gerhards 的建议(带有for
循环的那个),一个可能更好的选择是将文本文件的行“输入”到cmd
(不推荐;仅出于学术原因提供):
<script.txt %comspec%
或没有命令重复和标题:
<script.txt %comspec% /q /k
笔记:
for %a ...
,不是批处理文件语法for %%a ...
)GOTO
并且CALL :label
不会工作(它们不能在命令行上工作)for
命令有效,但More?
每行都会提示您的输出(不可抑制)。/v:on
开关cmd
(setlocal *
对命令行没有影响)示例- 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.