我正在尝试从一个文件夹中复制一些图片并使用批处理将其移动到另一个文件夹。我在设置路径时遇到了麻烦,因为路径中包含空格。如果我从文件夹中删除空格它工作正常但有空格会出错找不到路径 ..这里是代码
@echo off
SET odrive=%odrive:~0,2%
setlocal enabledelayedexpansion
set backupcmd=echo
set backupcmd=xcopy /s /c /d /e /h /i /r /y
set "filesw=C:\Users\%USERNAME%\Numerical Analysis\*.png"
for /f "delims=" %%i in ('dir /s /b %filesw%') do (
if "%%~xi"==".pdf" set "dest=D"
if "%%~xi"==".docx" set "dest=P"
if "%%~xi"==".zip" set "dest=Z"
if "%%~xi"==".rar" set "dest=Z"
if "%%~di"=="C:" if "!dest!"=="Z" set "dest=!dest!3"
%backupcmd% "%%i" "%drive%\Personal\PICS\Wedding\Barat\MOVIE!dest!\"
)
@echo off
cls
如果你们帮我解决这个问题,那将会非常有帮助。
答案 0 :(得分:1)
我就是这样做的。使用FOR / R命令遍历目录树,查找所需的文件类型。但我只是猜测你想要做什么。
@echo off
setlocal enabledelayedexpansion
set backupcmd=xcopy /s /c /d /e /h /i /r /y
set "filep=C:\Users\%USERNAME%\Numerical Analysis"
for /R "%filep%" %%i in (.) do (
if "%%~xi"==".pdf" set "dest=D"
if "%%~xi"==".docx" set "dest=P"
if "%%~xi"==".zip" set "dest=Z"
if "%%~xi"==".rar" set "dest=Z"
if "%%~di"=="C:" if "!dest!"=="Z" set "dest=!dest!3"
%backupcmd% "%%i" "%drive%\Personal\PICS\Wedding\Barat\MOVIE!dest!\"
)
答案 1 :(得分:1)
您的问题的解决方案,特别是“设置路径,因为路径中包含空格”导致“无法找到路径”是“引用文件规范”因此:
for /f "delims=" %%i in ('dir /s /b "%filesw%"') do (
通过这种方式,双引号之间的字符串是按字面意思使用的(尽管某些特殊字符具有像&^)!
这样的批处理含义需要转义;也就是说,前面有一个插入符号^
)。正如你所拥有的那样,dir
命令将使用多个参数执行,因为空格是分隔符,变量filesw
将在执行前逐字地替换为dir
命令 - 和大多数命令一样, dir
使用空格(逗号,制表符,分号)作为分隔符。