Batch file 在循环folderpath中使用通配符
我有一批正在整理不同文件夹中的图片。哪个工作正常Batch file 在循环folderpath中使用通配符,batch-file,for-loop,Batch File,For Loop,我有一批正在整理不同文件夹中的图片。哪个工作正常 @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 ) ) 现在我需要改变一点,但它不想工作。因此
@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移动到
所以我可能需要用*来代替12345。始终有一个abc目标文件夹,但我永远不知道结尾是什么。首先,不要使用/作为路径分隔符,它在Windows中是\的
通配符只能在路径的最后一个元素中使用,因此不能使用K:\folder\subfolder\subfolder\abc*\subfolder\pic1.jpg之类的内容
您可以在move命令行周围环绕一个图标,如下所示:
@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
)
)
@回音
对于%%a in*.jpg do
回波处理%%~a
对于%%~nxa do中的/F标记=1,2 delims=$%%%b
对于K:\folder\subfolder\subfolder\%%b*do中的/D%%D
移动%%a%%~d\子文件夹\%%%c>nul
从setlocal enabledelayedexpansion开始。明确查找目标文件夹:对于K:\folder\subfolder\subfolder\%%b*中的/d%%d,请设置TARGETFOLDER=%%~d,然后使用!TARGETFOLDER!。通配符不能以这种方式工作。