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!。通配符不能以这种方式工作。