我有几个文件夹,其中包含5到20个具有不同名称的文件。它们每周都会被替换,因此每个文件的名称也会发生变化。但是我需要它们具有特定的名称,以便我可以使用我的SQL加载器上传它们。
有没有办法创建批处理文件,进入我指定的每个文件夹,选择所有文件并更改所有名称? Perfect Solution只是一个向上计数的数字,如:file1.xml,file2.xml等。
由于我是批处理的新手,我搜索了一下并找到了以下代码,但它只更改了1个特定文件夹中的文件。
Dir *.xml | ForEach-Object -begin { $count=1 }
-process { rename-item $_ -NewName "$count.xml"; $count++ }
更新1 我发现了工作代码,它允许我按照我希望的方式重命名文件夹中的文件。我只需要一个代码,允许我同时或者一个接一个地自动执行此操作。
@echo off & setlocal EnableDelayedExpansion
set a=1
for /f "delims=" %%i in ('dir /b *.xml') do (
ren "%%i" "!a!.xml"
set /a a+=1
)
答案 0 :(得分:0)
@echo off & setlocal EnableDelayedExpansion
set a=1
rem make old name to prevent same name collision
for /D %%i in (*) do (
cd %%i
for /f "delims=" %%j in ('dir /b *.xml') do (
ren "%%j" "%%j-old.xml"
)
cd ..
)
rem rename process
for /D %%i in (*) do (
cd %%i
for /f "delims=" %%j in ('dir /b *.xml') do (
ren "%%j" "!a!.xml"
set /a a+=1
)
cd ..
)
echo Done
pause
Start .
希望它有所帮助。
答案 1 :(得分:0)
这是一个PowerShell代码,可以为多个文件夹(子文件夹)执行相同的操作
$path = 'Z:\'
Get-ChildItem -Path $path -Filter *.xml -Recurse | ForEach-Object -Begin {
[int]$count = '1'
} -Process {
Rename-Item -Path $_.FullName -NewName "$count.xml" -ErrorAction Stop
$count++
}