根据文件名将多个文件移动到基​​于文件名的唯一文件夹

时间:2013-06-06 22:30:53

标签: batch-file filenames

作为标题我试图弄清楚如何根据文件名将多个文件移动到基​​于文件名的唯一文件夹

例如,假设我有一个文件夹,其中包含来自我的房屋网络摄像头的图像,其名称如下:

garden.bench.2013.image535.other.random.stuff.jpg
kids.swing.2013.image757.other.random.stuff.jpg
garage.2013.image563.other.random.stuff.jpg
front.garden.2013.image456.other.random.stuff.jpg
other.random.names.2013.image576.other.random.stuff.jpg

我想将“花园长凳”,“前花园”和“车库”图像移动到特定文件夹(比如C:\ webcam \ images)根据日期之前的位文件名这样:

C:\webcam\images\Garden Bench\garden.bench.2013.image535.other.random.stuff.jpg
C:\webcam\images\Front Garden\front.garden.2013.image456.other.random.stuff.jpg
C:\webcam\images\Garage\garage.2013.image563.other.random.stuff.jpg

希望我能解释这一点,这是可行的,可以在一行

编辑:atm我使用的代码如下:

move /Y garden.bench*.jpg "C:\webcam\images\Garden Bench\"
move /Y front.garden*.jpg "C:\webcam\images\Front Garden\"
move /Y garage*.jpg "C:\webcam\images\Garage\"

这个工作正常但是当你有20行看起来像这样并且想要更简单的1行方式时它非常混乱

1 个答案:

答案 0 :(得分:0)

@echo off

:nextParam
   set selector=%~1
   if not defined selector goto :EOF
   for %%f in (%selector: =.%.%date:-4%.*.jpg) do (
      move /Y %%f "C:\webcam\images\%selector%\"
   )
   shift
goto nextParam

如果之前的批处理文件名为moveFiles.bat,那么移动文件的“1行”方式是:

moveFiles "Garden Bench" "Front Garden" Garage