我正在使用批处理脚本打开文件并创建临时文件。我从文件中读取文本并按行分割。然后它想写入一个临时文件,启动firefox并在其中打开一个链接。在循环结束之前,它将删除临时文件
taskkill /f /im "firefox.exe"
FOR /f "tokens=* delims=," %%i in (myfile.txt) do (
@echo %%i
@echo %%i > tmpkeywords.txt
timeout 5
start /B "" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
timeout 10
ECHO Now running the macro (in a 2nd Tab)...
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "wwww.google.com"
ECHO FINISHED!
timeout 60
REM REMOVE THE TEMPORARY FILE
del "C:\tmpkeywords.txt"
)
它没有完成这项工作,并且在进入循环时会出现一些错误。
myfile.txt包含
something
something else
other thing
some other thing
答案 0 :(得分:1)
以下是您的批处理代码略有改进:
@echo off
%SystemRoot%\System32\taskkill.exe /f /im "firefox.exe"
for /f "tokens=* delims=," %%i in (myfile.txt) do (
echo %%i
echo %%i>"%TEMP%\tmpkeywords.txt"
%SystemRoot%\System32\timeout.exe 5
start "" /B "%ProgramFiles(x86)%\Mozilla Firefox\firefox.exe"
%SystemRoot%\System32\timeout.exe 10
echo Now running the macro ^(in a 2nd tab^)...
"%ProgramFiles(x86)%\Mozilla Firefox\firefox.exe" "wwww.google.com"
echo FINISHED!
%SystemRoot%\System32\timeout.exe 60
REM REMOVE THE TEMPORARY FILE
del "%TEMP%\tmpkeywords.txt"
)
重要的是在第三个echo命令中使用^
转义括号,否则)
被解释为DO块的结尾。
请注意,在文件 myfile.txt 中输入命令提示符窗口cmd /?
后,如果上一个帮助页面输出中列出了一些字符,则此批处理代码将无效。像
%<>&()[]{}^=;!'+`,~
在批处理语法中有特殊含义。
因此,使用延迟环境变量扩展可能会更好地使用下面的批处理代码。
@echo off
setlocal EnableDelayedExpansion
%SystemRoot%\System32\taskkill.exe /f /im "firefox.exe"
for /f "tokens=* delims=," %%i in (myfile.txt) do (
set "Line=%%i"
echo !Line!>"%TEMP%\tmpkeywords.txt"
%SystemRoot%\System32\timeout.exe 5
start "" /B "%ProgramFiles(x86)%\Mozilla Firefox\firefox.exe"
%SystemRoot%\System32\timeout.exe 10
echo Now running the macro ^(in a 2nd tab^)...
"%ProgramFiles(x86)%\Mozilla Firefox\firefox.exe" "wwww.google.com"
echo FINISHED!
%SystemRoot%\System32\timeout.exe 60
REM REMOVE THE TEMPORARY FILE
del "%TEMP%\tmpkeywords.txt"
)
endlocal