我想根据文件名的第四个字符将文件复制到两个不同的位置。单色图像应转到黑白文件夹,彩色图像应转到彩色文件夹。文件名的第四个字符是C或B(对于彩色或黑/白)。
例如,F0#CG.eps将是彩色图像文件,而F0#BG.eps将是单色图像文件。
我还在复制时在文件名末尾添加用户名。这是我到目前为止所做的:
@echo off
copy *.eps* \\Server\Directory1\BW\??????????%username%.*
copy *.eps* \\Server\Directory1\COL\??????????%username%.*
答案 0 :(得分:2)
修改强>:
!name:~3,1!
确实获得第四个字符。%%~Xa
扩展名替换中添加了缺失的百分比。
@echo off
setlocal EnableDelayedExpansion
for %%a in (*.eps*) do (
set name=%%a
if "!name:~3,1!" equ "B" (
copy "%%a" "\\Server\Directory1\BW\%%~Na%username%.%%~Xa"
) else (
copy "%%a" "\\Server\Directory1\COL\%%~Na%username%.%%~Xa"
)
)
答案 1 :(得分:1)
我相信您只需对代码稍作修改即可:
@echo off
copy ???B*.eps* "\\Server\Directory1\BW\??????????%username%.*"
copy ???C*.eps* "\\Server\Directory1\COL\??????????%username%.*"
您可能希望增加目标名称中的问号数量。如目前所写,它只能正确支持最多10个字符的名称,不包括扩展名。
此外,名为aaaB.part2.eps
的文件将被复制为aaaB%username%.part2.eps
。如果你想要aaaB.part2%username%.eps
,那么你需要一个更像Aacini的解决方案。
答案 2 :(得分:0)
以下是@Aacini答案的修改版本,其中没有包含"%〜Xa替换错误"
@echo off
echo Setting Environment...
setlocal EnableDelayedExpansion
echo Scanning files...
for %%a in (*.eps) do (
set name=%%a
echo "Copying %name%..."
if "!name:~3,1!" equ "B" (
copy "%%a" "\\Server\Directory1\BW\%username%"
) else (
copy "%%a" "\\Server\Directory1\COL\%username%"
)
)
pause