[英]Renaming files in sub folders
@echo off
for /r /d /s %%d in (*.*) do (
if exist "%%d\(1).txt" (
rename "%%d\(1).txt" "%%d(-123).txt"
)
)
当我测试这个时,没有任何反应。 我错过了什么?
我已经用几种不同的方式对此进行了编辑,但无法正常工作。
有/s
,没有它,有if exist
,没有,有(*.txt)
,什么都没有,我真的不需要if exist
,只是测试它。
我的目标是: Main Folder\folder\Sub Folders
在子文件夹中,我可以有 80 到 150 个 txt 文件,这样命名(1).txt
, (2).txt
等,我试图让这个批处理文件在每个子文件夹中找到所有(1).txt
, 并重命名为(-123.txt)
, 找到所有(2).txt
重命名为(-121).txt
, 一直到xx.txt
号文件。
由于我没有更简单的方法来重命名这些文件,我将不得不在同一个批处理文件中多次重复此脚本。
一旦这个脚本起作用,我将不得不制作很多副本并制作一个非常长的脚本批次。 我知道他们现在的脚本会按照我需要的方式重命名,但是如果它可以扫描主文件夹中的所有文件夹和子文件夹,那就更好了
(1).txt => (-123).txt
(2).txt => (-121).txt
(3).txt => (-119).txt
(4).txt => (-87).txt
(5).txt => (-55).txt
(6).txt => (-110).txt
(7).txt => (-101).txt
现在我有这个,但我要一个文件夹一个文件夹地去。
重命名.bat:
(1).txt => (-123).txt
(2).txt => (-121).txt
(3).txt => (-119).txt
(4).txt => (-87).txt
(5).txt => (-55).txt
(6).txt => (-110).txt
(7).txt => (-101).txt
有没有办法让我当前的 bat 文件读取子文件夹,因为我已经有了rename.bat
文件。 我有一个简单的基本ren "(1).txt "(-123).txt",
效果很好,但是将它逐个移动到 100 到 200 多个文件夹需要很长时间
我让我们称之为 main.txt 文件夹
在主文件夹中我有 rename.bat
在主文件夹中我有一个工作文件夹
在工作文件夹中,我有 100 个文件夹和 100 个子文件夹
我正在尝试让我的 rename.bat 从主文件夹中读取工作文件夹
并扫描每个文件夹和子文件夹,找到每个匹配的 txt 文件
当它扫描、查找和匹配每个 txt 文件时,它会重命名它们
(1).txt => (-123).txt
(2).txt => (-121).txt
(3).txt => (-119).txt
(4).txt => (-87).txt
(5).txt => (-55).txt
(6).txt => (-110).txt
(7).txt => (-101).txt
现在我将每个文件夹 1 个 1 个复制并放在 main.txt 文件夹中
并双击 rename.bat,这将花费很长时间
我还将 rename.bat 文件复制到文件所在的文件夹,然后在那里双击它
我有超过 100 个文件夹,所以这是永远的
你可以试试:
setlocal enabledelayedexpansion
set /a "numfiles=20"
for /f "tokens=* delims=" %%a in ('dir /b /s "C:\path\to\your\folder"') do (
set "pt=%%~dpa"
set "pt=!pt:~0,-1!"
set "opts=tokens=* delims="
for /l %%i in (1,1,!numfiles!) do (
if exist "!pt!\(%%i).txt" (
call:getrenamestring "!opts!" renamestring
move /y "!pt!\(%%i).txt" "!pt!(!renamestring!).txt"
)
set "opts=tokens=* skip=%%i delims="
)
)
goto:end
:getrenamestring
set "optstmp=%~1"
for /f "usebackq %optstmp%" %%s in ("file where you store the renaming patterns IN ROW ORDER.txt") do (
set "%2=%%s"
exit /b 0
)
exit /b 0
:end
endlocal
exit /b 0
如果我正确理解了您的任务,请保持Rename.bat
不变并与我在下面发布的批处理文件位于同一位置,这也应该是您要迭代的树的根目录。 因此,如果所有文件都在C:\Users\Javier\Desktop
C:\Users\Javier\Desktop
拥有Rename.bat
和这个新的批处理文件,然后只需双击您的新批处理文件!
@For /F "EOL=? Delims=" %%G In ('Dir /B /S /A:D') Do @PushD "%%G" && (Call "%~dp0Rename.bat" >NUL 2>&1 & PopD)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.