无法通过echo打印字符串

时间:2018-01-08 02:08:54

标签: batch-file echo

无法从批次

打印%%#
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 
)

继续 change to directory after searching for the file via DIR

2 个答案:

答案 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#"
)