无法从批次
打印%%#echo for /f 'delims=' %%# in ('dir doc1.docx /s /b') do ( >> C:\test.bat
echo set 'file=%%~dp#' >> C:\test.bat
echo ) >> C:\test.bat
预期结果
for /f 'delims=' %%# in ('dir doc1.docx /s /b') do (
set 'file=%%~dp#' >> C:\test.bat
)
答案 0 :(得分:0)
您只需要转义百分号:
echo for /f 'delims=' %%%%# in ('dir doc1.docx /s /b') do ( >> test2.bat
答案 1 :(得分:0)
使用(
转开大括号<>
以及任何重定向符号^
,从而使这些字符成为字面值。您可以将结束括号)
作为
确定无疑。
百分比符号通过加倍来转义,因此%
变为%%
。
echo for /f 'delims=' %%%%# in ^('dir doc1.docx /s /b'^) do ^(
echo set 'file=%%~dp#' ^>^> C:\test.bat
echo ^)
输出:
for /f 'delims=' %%# in ('dir doc1.docx /s /b') do (
set 'file=%~dp#' >> C:\test.bat
)
虽然我建议在某些地方使用双引号而且我要去
猜测你想把这个for
循环写入test.bat。通常是C:\
UAC禁止写入,因此我将进行相对写入。
( echo for /f "delims=" %%%%# in ^('dir doc1.docx /s /b'^) do ^(
echo set "file=%%~dp#"
echo ^)
) >> .\test.bat
输出:
for /f "delims=" %%# in ('dir doc1.docx /s /b') do (
set "file=%~dp#"
)