处理批处理参数中的文件路径空间

时间:2016-01-10 15:56:39

标签: batch-file cmd filepath file-transfer

我正在编写一个Win 7批处理脚本,用于将文件从各种源路径复制到一个位置。正在复制的文件的完整路径名列在文本文件中。

当源路径不包含空格时,以下脚本有效。如果路径名作为常量包含在引号和%~1的组合中,我可以处理空格。如何为作为参数传递的路径模拟此组合?

Transfer2.bat:

set SOURCELIST=c:\Temp\List1.txt
set DEST=c:\Temp\To

for /f %%A in (%SOURCELIST%) do (forfiles /p %%~dpA /s /m %%~nxA /c "cmd /c copy /y @path %DEST%\@file" 2>>log.txt)

for /f %b in (log.txt) do (echo.%~b)>>log.txt`

del log.txt

List1.txt:

C:\temp\From\Test_This Space.txt
C:\temp\From\Test.txt

结果:

C:\temp\From\Test.txt的转移成功。

  

日志返回ERROR: Files of type "Test_This" not found.的{​​{1}}。

1 个答案:

答案 0 :(得分:1)

脚本需要forfiles命令吗?如果没有,我认为这已经足够了:

@echo off
set SOURCELIST=C:\Temp\List1.txt
set DEST=C:\Temp\To

for /f "delims=" %%A in (%SOURCELIST%) do (
    copy /y "%%~fA" "%DEST%\%%~nxA" >>Log.txt 2>&1
)
type Log.txt
del /q Log.txt
pause
exit /b