简体   繁体   English

创建批处理文件以删除,重命名和移动多个文件的多个子文件夹

[英]Create batch file to delete,rename and move multiple files multiple subfolder

I'm trying to develop a batch script that will allow me to rename, delete and move files. 我正在尝试开发一个批处理脚本,该脚本允许我重命名,删除和移动文件。

Step 1: 第1步:

For each folder: delete "00.jpg" and "Credits.jpg" file. 对于每个文件夹:删除“ 00.jpg”和“ Credits.jpg”文件。

FOR /D %%d IN (*) DO del %%d\00.jpg;del %%d\Credits.jpg

Step 2 (Where I'm stuck): 第2步(我被困的地方):

For each folder: retrieve the last 4 characters (XXXX). 对于每个文件夹:检索最后4个字符(XXXX)。
Every file in each folder must be renamed to : XXXX + " (" + filename+")".jpg 每个文件夹中的每个文件都必须重命名为:XXXX +“(” + filename +“)”。jpg

For example: a_v18_c160\\03.jpg -> a_v18_c160\\c160 (03).jpg 例如:a_v18_c160 \\ 03.jpg-> a_v18_c160 \\ c160(03).jpg

Folder names can contain special characters: "["."]"."_","-" but always end with "c" plus three numbers. 文件夹名称可以包含特殊字符:“ [”。“]”。“ _”,“-”,但始终以“ c”加上三个数字结尾。

Step 2.1(Optional): 步骤2.1(可选):

Remove 0 if it's not necessary. 如果不需要,请删除0。 For example: c160 (03).jpg -> c160 (3).jpg 例如:c160(03).jpg-> c160(3).jpg

Step 3: 第三步:

Move files from every subfolder to root folder: 将文件从每个子文件夹移动到根文件夹:
Example: Root Folder\\a\\c160 (02).jpg -> Root Folder\\c160 (02).jpg 示例:根文件夹\\ a \\ c160(02).jpg->根文件夹\\ c160(02).jpg

FOR /D %%d IN (*) DO move %%d\* "F:\Root Folder\"

Starting from something like this: 从这样的事情开始:

F:\\Root Folder\\a_v18_c160\\00.jpg F:\\根文件夹\\ a_v18_c160 \\ 00.jpg
F:\\Root Folder\\a_v18_c160\\01.jpg F:\\根文件夹\\ a_v18_c160 \\ 01.jpg
F:\\Root Folder\\a_v18_c160\\02.jpg F:\\根文件夹\\ a_v18_c160 \\ 02.jpg
F:\\Root Folder\\a_v18_c160\\03.jpg F:\\根文件夹\\ a_v18_c160 \\ 03.jpg
F:\\Root Folder\\a_v18_c160\\Credits.jpg F:\\根文件夹\\ a_v18_c160 \\ Credits.jpg
F:\\Root Folder\\a_v18_c161\\00.jpg F:\\根文件夹\\ a_v18_c161 \\ 00.jpg
F:\\Root Folder\\a_v18_c161\\01.jpg F:\\根文件夹\\ a_v18_c161 \\ 01.jpg
F:\\Root Folder\\a_v18_c161\\Credits.jpg F:\\根文件夹\\ a_v18_c161 \\ Credits.jpg

The result would be: 结果将是:

F:\\Root Folder\\c160 (01).jpg F:\\根文件夹\\ c160(01).jpg
F:\\Root Folder\\c160 (02).jpg F:\\根文件夹\\ c160(02).jpg
F:\\Root Folder\\c160 (03).jpg F:\\根文件夹\\ c160(03).jpg
F:\\Root Folder\\c161 (01).jpg F:\\ Root Folder \\ c161(01).jpg
F:\\Root Folder\\a_v18_c160\\ F:\\根文件夹\\ a_v18_c160 \\
F:\\Root Folder\\a_v18_c161\\ F:\\根文件夹\\ a_v18_c161 \\

How can I perform step 2? 如何执行步骤2?

Test this on some sample files and folders. 在一些示例文件和文件夹上对此进行测试。

It is meant to be run from the root_folder where the files are to be moved to. 它应从要移动文件的root_folder运行。

@echo off
for /r %%a in (00.jpg Credits.jpg) do del "%%a"
  setlocal enabledelayedexpansion
   for /d /r %%a in (*) do (
      set "num=%%~nxa"
      set "num=!num:~-4!"
      for %%b in ("%%a\*.jpg") do move "%%b" ".\!num! (%%~nb)%%~xb"
   )
for /f "delims=" %%a in ('dir /b /a-d *.jpg') do (
   set "name=%%a"
   ren "%%a" "!name:(0=(!"
)

instead of a batch script you could always write a command line program in Java, Perl, Ruby, PHP. 除了批处理脚本,您还可以始终使用Java,Perl,Ruby,PHP编写命令行程序。 etc your favorite language. 等您喜欢的语言。 I find writing complicated scripts like this easier using a high level programming language. 我发现使用高级编程语言更容易编写这样的复杂脚本。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM