批处理文件更改双引号

时间:2014-12-10 15:29:53

标签: batch-file

无法运行批处理文件。

SET startIN="D:\Documents and Settings\%USERNAME%\Desktop\DataXfer Helper\StartFolder"
SET collection="D:\Documents and Settings\%USERNAME%\Desktop\DataXfer Helper\StartFolder\*.zip"

FOR /F %%G IN (‘dir /b %collection%\*.zip’) DO  “C:\Program Files\Winzip\wzunzip” –E  %startIN%\%%G  %startIN%

当我在命令提示符下键入行时 - 它工作正常(唯一的区别是在命令提示符下键入时我使用%G而不是%%G)。

因此,环境变量正在被正确创建 - 但是当我运行批处理时,单引号和E之前的连字符被转换为其他字符(无法识别它们是什么)。

那么,为什么运行批处理的任何想法都会改变字符?

谢谢。

1 个答案:

答案 0 :(得分:0)

有几个问题:

  1. 您的FOR行中的符号不​​支持ASCII字符。在命令行中重新键入'"-以更正它们。
  2. 字符串扩展将包含您在上面路径中设置的引号。例如,%startIN%\%%G将扩展为"D:\Documents and Settings\%USERNAME%\Desktop\DataXfer Helper\StartFolder"\MyFile.zip。在处理路径时,请确保您的逻辑知道引号,这样它们就不会被困在结果的中间。
  3. 尝试将脚本更新为:

    REM Remove the quotes from the path.
    REM Quotes will be added once we know the full path.
    SET startIN=D:\Documents and Settings\%USERNAME%\Desktop\DataXfer Helper\StartFolder
    
    REM Quote here because we know the full path.
    SET collection="%startIN%\*.zip"
    
    REM Update FOR loop to include parsing options and properly quote output.
    REM Also update invalid ASCII chars.
    FOR /F "usebackq tokens=* delims=" %%G IN (`dir /b %collection%`) DO "C:\Program Files\Winzip\wzunzip" -E "%startIN%\%%G" "%startIN%"
    
相关问题