我试图从一个文件夹复制一些图片,并使用批处理将其移动到另一个文件夹。我在设置路径时遇到了问题,因为路径包含it.If中的空格,我从文件夹中删除了空格,它可以正常工作,但是对于空格,无法找到路径。这是密码。
@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如果你们能帮我解决这个问题会很有帮助的。
发布于 2015-12-31 05:31:05
您的问题的解决方案,特别是“设置路径,因为路径中包含空格”导致“无法找到路径”,因此是“引用文件”,因此:
for /f "delims=" %%i in ('dir /s /b "%filesw%"') do (这样,双引号之间的字符串就会按字面意思使用(尽管某些特殊字符需要转义,比如&^)!这样的批处理,即前面有一个插入符号^)。正如您所拥有的,dir命令将使用多个参数执行,因为空格是分隔符,变量filesw在执行之前将字面上替换为dir命令--与大多数命令一样,dir使用空格(逗号、制表符、分号)作为分隔符。
发布于 2015-12-30 20:49:43
我就是这样做的。使用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!\"
)https://stackoverflow.com/questions/34536476
复制相似问题