使用CMD / c时如何绕过字符限制?

时间:2015-09-02 02:24:18

标签: windows batch-file command-line character-limit

我正在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”之后调用所有文本而不破坏字符限制?我需要为目录中的每个文件完成所有操作。

提前致谢。

2 个答案:

答案 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