编写批处理文件以将混乱的文件移动到相应的文件夹中

时间:2017-09-30 11:06:41

标签: batch-file cmd

我有以下批处理文件代码,当在文件夹中运行时,检查文件扩展名,根据文件扩展名创建文件夹,最后将文件移动到具有扩展名的文件夹名称,即它将创建.gif文件夹将所有GIF移入其中.jpg文件夹将所有jpg移动到其中等等。

我没有编写批处理文件的专业知识,但我需要的是以这样一种方式更改此代码:所有文件都可以进入文件夹,以便所有图像文件都进入"图像&# 34;文件夹,所有视频文件,#34;视频",Docs文件夹中的所有文档文件(pdf,docs,xls等),所有音频文件都应该在Audio文件夹中......等等...... 有人可以帮忙???

@echo off
rem For each file in your folder
for %%a in (".\*") do (
rem check if the file has an extension and if it is not our script
if "%%~xa" NEQ ""  if "%%~dpxa" NEQ "%~dpx0" (
rem check if extension folder exists, if not it is created
if not exist "%%~xa" mkdir "%%~xa"
rem Move the file to directory
move "%%a" "%%~dpa%%~xa\"
))

@compo与类别有关的文件类型如下: -

Docs
   .docs,docx,xls,pdf
Video
   .avi,.mpeg,.mp4
Audio
   .mp3,.wma
Image
   .jpg,.bmp,.gif

依旧......

类别名称实际上应该是文件夹名称。

2 个答案:

答案 0 :(得分:0)

@echo off

for %%s in (Images Videos Docs Audio) do md .\%%s 2>nul

rem For each file in your folder
for %%a in (".\*") do (
 set "moved="
 rem check if the file has an extension and if it is not our script
 if "%%~xa" NEQ ""  if "%%~dpxa" NEQ "%~dpx0" (

  for %%s in (pdf doc xls) do if /i "%%~xa"==".%%s" set "moved=Y"&move "%%a" ".\Docs\"
  for %%s in (mpg avi) do if /i "%%~xa"==".%%s" set "moved=Y"&move "%%a" ".\Videos\"
  IF NOT DEFINED moved (

   rem check if extension folder exists, if not it is created
   if not exist "%%~xa" mkdir "%%~xa"
   rem Move the file to directory
   move "%%a" "%%~dpa%%~xa\"

  )

 )
)

注意:MD ... 2>nul在无法创建目录时(因为它已经存在)禁止显示错误消息

首先,创建保存集合的目录。

对于每个文件,首先将moved设置为 nothing (即“清除”它以使其未定义

然后以不区分大小写的方式(/ i)检查扩展名,以查找要放入集合中的扩展名列表。如果找到匹配项,请将moved设置为某个值(如Y)并移至相应的集合。检查完所有收集列表后,如果moved仍然是没有(即未定义),则将文件移动到扩展名确定的目录。

(未测试的)

答案 1 :(得分:0)

由于您的商家信息很小,您可能只需将信息添加到脚本文件中,而不是单独的文件:

@For /F "Tokens=1*Delims=:" %%A In ('FindStr/B : %0'
) Do @RoboCopy/MOV . "%%A"%%B>Nul
@Exit/B

:Docs: *.doc *.docx *.xls *.pdf
:Video: *.avi *.mpeg *.mp4
:Audio: *.mp3 *.wma
:Image: *.jpg *.bmp *.gif

根据需要编辑最后四行,这样做应该是不言自明的

修改

使用单独的文件 FileCats.txt

Docs: *.doc *.docx *.xls *.pdf
Video: *.avi *.mpeg *.mp4
Audio: *.mp3 *.wma
Image: *.jpg *.bmp *.gif

...和批处理文件 Categorise.cmd

@For /F "UseBackQTokens=1*Delims=:" %%A In ("FileCats.txt"
) Do @RoboCopy/MOV . "%%A"%%B>Nul

确保 :

之后有空格