2016-08-09 8 views
0

ファイル名が異なる5〜20個のファイルを含むフォルダがいくつかあります。毎週置き換えられ、各ファイルの名前も変更されます。しかし、私は彼らが私のSQLローダーを使用してそれらをアップロードすることができます特定の名前を持っている必要があります。バッチで複数のフォルダの複数のファイル名を変更する

バッチファイルを作成する方法はありますか?指定したすべてのフォルダに移動し、すべてのファイルを選択してすべての名前を変更しますか? Perfect Solutionはfile1.xml、file2.xmlなどのアップカウントの数字になります。

私はバッチiの全体的な初心者からちょっと調べて、次のコードを見つけましたが、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

どの言語/データベースを介して複数のフォルダ(サブフォルダ)のために同じことを行うにはPowerShellのコードですか? –

+0

私はpowershellがこれに最も近いソリューションを実現するのが最も簡単だと思います。 –

+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 . 

ことができます願っています。

0

ここでは、これを達成したい

$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++ 
} 
関連する問題