我有一批正在整理不同文件夹中的图片。哪个工作正常
@echo off
for %%a in (*.jpg) do (
echo processing "%%a"
for /f "tokens=1,2 delims=$" %%b in ("%%~nxa") do (
move "%%a" "K:\folder\subfolder\subfolder\%%b/subfolder/%%c" >nul
)
)
现在我需要更改一下,但是它不想工作。因此jpg的第一部分只是子文件夹名称的一部分,其余部分未知。
批处理将是这样的:
@echo off
for %%a in (*.jpg) do (
echo processing "%%a"
for /f "tokens=1,2 delims=$" %%b in ("%%~nxa") do (
move "%%a" "K:\folder\subfolder\subfolder\%%b*/subfolder/%%c" >nul
)
)
例如,我想移动图片:abc$pic1.jpg
到
K:\folder\subfolder\subfolder\abc12345\subfolder\pic1.jpg
因此,我可能确实需要使用*而不是12345。始终有一个abc目标文件夹,但我不知道结尾是什么。
答案 0 :(得分:1)
首先,不要使用/
作为路径分隔符,在Windows中是\
!
通配符只能在路径的最后一个元素中使用,因此不能使用诸如K:\folder\subfolder\subfolder\abc*\subfolder\pic1.jpg
之类的东西。
您可以在move
命令行周围包裹一个for /D
loop,如下所示:
@echo off
for %%a in ("*.jpg") do (
echo processing "%%~a"
for /F "tokens=1,2 delims=$" %%b in ("%%~nxa") do (
for /D %%d in ("K:\folder\subfolder\subfolder\%%b*") do (
move "%%~a" "%%~d\subfolder\%%c" > nul
)
)
)