我正在Windows 7中编写命令行批处理脚本以上传多个图像进行托管,将网址(使用this program)和文件名粘贴到一行文本中,然后将文本附加到文件中。 / p>
以下代码给出了一个错误,因为命令“cmd / c”太长了。
@echo on
set DIR1="C:\Users\My\Desktop\temp"
set DIR2="C:\Misc\Programs\EasyImgur"
set DIR3="C:\Users\My\Desktop"
set DIR2=%DIR2:"=%
set DIR3=%DIR3:"=%
forfiles /m *.png /p %DIR1% /c "cmd /c %DIR2%\EasyImgur.exe /anonymous @path && timeout /t 2 /nobreak > NUL && paste > %DIR3%\temp.txt && set /p URL= < %DIR3%\temp.txt && echo if(G9="@fname",IMAGE(%URL%,3), >> %DIR3%\test.txt"
del %DIR3%\temp.txt
pause
exit
这有什么办法吗?某种方式在“cmd / c”之后调用所有文本而不破坏字符限制?我需要为目录中的每个文件完成所有操作。
提前致谢。
答案 0 :(得分:1)
感谢Harry Johnston的帮助,我明白了!看看吧。
代码是:
@echo off
setlocal EnableDelayedExpansion
set "DIR1=C:\Users\RyzaJr\Desktop\temp"
set "DIR2=C:\Misc\Programs\EasyImgur"
for %%a in (%DIR1%\*.png) do (
"%DIR2%\EasyImgur.exe" /anonymous "%%a"
timeout /t 4 /nobreak > NUL
paste > temp.txt
set /p URL= < temp.txt
echo if(G11="%%~na",IMAGE(!URL!,3^), >> "output.txt"
)
del temp.txt
exit
答案 1 :(得分:0)
这可能对你有用 - 你回到文件中的术语虽然有不匹配的括号。
@echo on
set "DIR1=C:\Users\My\Desktop\temp"
set "DIR2=C:\Misc\Programs\EasyImgur"
set "DIR3=C:\Users\My\Desktop"
for %%a in ("%DIR1%\*.png") do (
start "" /w /b "%DIR2%\EasyImgur.exe" /anonymous "%%a"
set "flag="
for /f "delims=" %%b in ('paste') do (
if not defined flag >>"%DIR3%\test.txt" echo if(G9="%%~na",IMAGE(%%b,3^),
set flag=1
)
)
pause