选择一个我可以运行的文件夹
ren *.jpeg *.png
我有多个文件夹。我想创建一个批处理文件,循环遍历所有文件夹并重命名其中的文件。
例如,我有文件夹TEST1
和TEST2
内部根目录TEST
。我想创建一个批处理,将和中的所有.jpeg
文件重命名为。TEST1
TEST2
.png
FOR /R "E:\TEST\" %%G in (*.jpeg) DO ren *.jpeg *.png
我收到一个错误:
该系统找不到指定的文件
我不明白这个问题。
答案1
您没有将for
命令应用于ren
操作。
for /r "E:\test\" %%G in (*.jpeg) do ren "%%~G" *.png
如果您以交互方式执行此操作而不是在批处理文件中执行此操作,则需要更改%%
为。%
~
重新添加的引号是为了避免包含空格的路径可能出现的任何错误。
答案2
或者,如果你想要一个稍微短一点的单行代码,下面是如何结合使用REN
命令和GLOBAL
命令在JP Software 的 TCC/LE:
GLOBAL REN *.JPEG *.PNG
当然,如果您想忽略命令中的任何非零退出代码,请使用的GLOBAL
选项。/I
REN
答案3
完整的解决方案如下。
在“变量”部分设置变量:
@echo off
::only to tell user what this bat are doing
echo.1.initializing...
::enable that thing to allow, for example, incremental counter in a for loop :)
echo.- EnableDelayedExpansion
SETLOCAL EnableDelayedExpansion
::variables
echo.- variables
:: - place here the absolute root path of your files
set path2work="C:\Documents and Settings\ubirajara2\Desktop\Nova pasta"
set extension2exclude=jpeg
set extension2put=png
::only an auxiliar variable
set pathbak=%cd%
::go to %path2work% and its drive letter
echo.- entering the path you want
for /f "delims=¯" %%i in ('echo.%path2work%') do %%~di
cd %path2work%
::search all subfolders and save them to a temp file
echo.- searching for subfolders
echo.%path2work%>%temp%\tmpvar.txt
for /f "delims=¯" %%i in ('dir /s /b /on /ad') do echo."%%i">>%temp%\tmpvar.txt
::execute command for root folder and all found subfolders
echo.
echo.2.executing...
for /f "delims=¯" %%i in (%temp%\tmpvar.txt) do (
cd %%i
echo.- in folder: %%i
for /f "delims=¯" %%j in ('dir /b /on /a-d *.%extension2exclude%') do (
set newname=%%~nj.%extension2put%
echo.- renaming from "%%j" to "!newname!"...
ren "%%j" "!newname!"
)
)
echo.
echo.3.exiting...
::return to %pathbak% and its driveletter
for /f "delims=¯" %%i in ('echo.%pathbak%') do %%~di
cd %pathbak%
@echo on