Batch file 使脚本成批读取子文件夹
所以我一直在写这个脚本Batch file 使脚本成批读取子文件夹,batch-file,Batch File,所以我一直在写这个脚本 @echo off Setlocal enabledelayedexpansion cd /d "%~dp0" Set "Pattern1=(1)" Set "Replace1=(-125)" For %%a in (*.txt) Do ( Set "File=%%~a" Ren "%%a" "!File:%Pattern1%=%Replace
@echo off
Setlocal enabledelayedexpansion
cd /d "%~dp0"
Set "Pattern1=(1)"
Set "Replace1=(-125)"
For %%a in (*.txt) Do (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern1%=%Replace1%!"
)
我一直在尝试从许多其他文件夹和子文件夹的主文件夹读取它而我只是不断得到Sytex错误
我正在尝试将文件名(1)中包含此项的所有.txt文件重命名为(-125)
现在,我的脚本直接放在文件的文件夹中时效果很好,但我有1000多个文件夹和子文件夹,所以我需要它从主文件夹读取
我尝试了许多不同的方法,但没有一种有效
测试1:
FOR /f "delims=" %%a IN ('dir /b /s /a-d "*.txt"') DO (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern1%=%Replace1%!"
)
测试2:FOR /f %%a IN ('dir /b /s /a-d "*.txt"') DO (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern1%=%Replace1%!"
)
测试3:FOR %%a IN ('dir /b /s /a-d "*.txt"') DO (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern1%=%Replace1%!"
)
还有其他几种方法,但我得到的只是无响应或Syntex错误有人能帮我看看我的错误在哪里吗
另外,如果没有太多问题,是否有办法使此脚本成为多文件名转换器
这就是我所拥有和正在做的
(1) Houston.txt it gets renamed to (-125) Houston.txt
(2) Austin.txt it gets renamed to (-120) Austin.txt
(3) Dallas.txt it gets renamed to (-89) Dallas.txt
我有大约110个.txt文件,使用这一个脚本,我必须创建110个脚本来更改所有txt文件,是否有方法将所有110个文件添加到一个脚本中,需要一个通配符,因为所有文件夹和子文件夹都有不同的文件名好的,所以我设法将我的110个脚本转换为1个脚本,但是脚本非常长
这就是我现在拥有它的方式。我不想在这里列出我想要简短的整个脚本
@echo off
Setlocal enabledelayedexpansion
cd /d "%~dp0"
Set "Pattern1=(1)"
Set "Replace1=(-125)"
Set "Pattern2=(2)"
Set "Replace2=(-124)"
Set "Pattern3=(3)"
Set "Replace3=(-121)"
Set "Pattern4=(4)"
Set "Replace4=(-117)"
Set "Pattern5=(5)"
Set "Replace5=(-120)"
Set "Pattern6=(6)"
Set "Replace6=(-116)"
FOR /f "delims=" %%a IN ('dir /b /s /a-d "*.txt"') DO (
Set "File=%%~na"
Ren "%%a" "!File:%Pattern1%=%Replace1%!%%~xa"
Ren "%%a" "!File:%Pattern2%=%Replace2%!%%~xa"
Ren "%%a" "!File:%Pattern3%=%Replace3%!%%~xa"
Ren "%%a" "!File:%Pattern4%=%Replace4%!%%~xa"
Ren "%%a" "!File:%Pattern5%=%Replace5%!%%~xa"
Ren "%%a" "!File:%Pattern6%=%Replace6%!%%~xa"
这是重新命名文件的第二个脚本@echo off
Setlocal enabledelayedexpansion
cd /d "%~dp0"
Set "Replace1=(1)"
Set "Pattern1=(-125)"
Set "Replace2=(2)"
Set "Pattern2=(-124)"
Set "Replace3=(3)"
Set "Pattern3=(-121)"
Set "Replace4=(4)"
Set "Pattern4=(-117)"
Set "Replace5=(5)"
Set "Pattern5=(-120)"
Set "Replace6=(6)"
Set "Pattern6=(-116)"
FOR /f "delims=" %%a IN ('dir /b /s /a-d "*.txt"') DO (
Set "File=%%~na"
Ren "%%a" "!File:%Pattern1%=%Replace1%!%%~xa"
Ren "%%a" "!File:%Pattern2%=%Replace2%!%%~xa"
Ren "%%a" "!File:%Pattern3%=%Replace3%!%%~xa"
Ren "%%a" "!File:%Pattern4%=%Replace4%!%%~xa"
Ren "%%a" "!File:%Pattern5%=%Replace5%!%%~xa"
Ren "%%a" "!File:%Pattern6%=%Replace6%!%%~xa"
提前感谢
ren的目标仅为文件名-不允许包含文件夹信息。请尝试
%~na
或%~nxa
顺便说一句,您也可以在PowerShell中执行此操作,例如获取ChildItem-Filter'(1)*.txt'-File-Recurse-Rename-Item-NewName{($\uName.)。替换(“(1)”,(-125)}
,并从批处理文件中执行%SystemRoot%\System32\WindowsPowerShell\v1.0\PowerShell.exe-RofNoFile-命令“获取ChildItem-Filter'(1)*.txt'-File-Recurse | Rename Item-NewName{($..Name).Replace(“(1)”,(.125)”}“
。谢谢,Compo我不知道如何设置Powershell,我会尝试,但从未尝试过it@Stephan-因此,这将有助于使其成为SubFolders@JavierRivas,Stephan的意思是,Set“File=%%~na”
和Ren“%%a”!File:%Pattern1%=%Replace1%!%%~xa
,或设置“文件=%%~nxa”
和Ren“%%a”!文件:%Pattern1%=%Replace1%!”
。至于您的主命令,我建议您使用for/f“delims=“%%a IN('dir/b/s/a-d“*.txt“')(
是其中最好的一个,请注意它在当前工作目录中递归,因此您应该真正定义它,或者将*.txt
更改为“P:\athTo\*.txt”
。