2017-03-02 18 views
0

サブフォルダ内の利用可能なすべての.txtファイルに自分のフォルダ名を追加したいと思います。以下はファイル/ディレクトリ構造です。 Windows Batchスクリプトでこれを達成する必要があります。Windowsバッチファイルのファイルに再帰的にフォルダ名を追加します

C:\ソース\ソース1 \ 1 \ A.TXTのC:\ソース\ソース1 \ 1 \ B.TXT

C:\ソース\ソース1 \ 2 \ A.TXTのC:\ソース\ソース1 \ 2 \ C

B.TXT:\ソース\ソース2 \ 3 \ A.TXTのC:\ソース\ソース2 \ 3 \ B.TXT

上記のファイルは、以下のように名前を変更する必要があります:

C:\ Source \ Sour CE1 \ 1 \ 1_a.txtのC:\ソース\ソース1 \ 1 \ 1_b.txt

C:\ソース\ソース1 \ 2 \ 2_a.txtのC:\ソース\ソース1 \ 2 \ 2_b.txt

C:\ソース\ソース2 \ 3 \ 3_a.txtのC:\ソース\ソース2 \ 3 \ 3_b.txt

Similary、私はソース1 ... Source30を持っており、それぞれのソースディレクトリの下に、私は複数あります異なる番号のフォルダ。これらのディレクトリの下にあるすべてのファイルの名前を変更し、番号(ディレクトリ名)をファイル名に追加する必要があります。

は、これまでのところ、以下の私が書いたものである。これにより

for %%* in (.) do set CurrDirName=%%~nx* 
echo %CurrDirName% 

for /r %%x in (*.txt) do ren "%%x" "%CurrDirName%_%%x" 

、私は1つのディレクトリにそれを達成することができています。私はそれを再帰的にすることはできませんでした。皆さん、これで私を助けてください。

FORループがある
+1

...特定のファイルが既に名前が変更されたかどうかを確認し検討したい、どうもありがとうございました*タグ – samdd

答えて

0
@echo OFF 
SETLOCAL EnableExtensions 
for /F "delims=" %%G in ('dir /B /S "C:\Source\*.txt"') do (
    for %%g in ("%%~dpG.") do ECHO rename "%%~fG" "%%~nxg_%%~nxG" 
) 
pause 

  • アウター%%Gループは.txtファイル(再帰的)の静的リストを作成し、
  • インナー%%gループは、すべての特定のファイルの親フォルダを取得します。

renameコマンドは、単にデバッグの目的でECHOを使用して表示されます。これを有効にするには、ECHOという単語を削除してください(デバッグした直後は削除しないでください)。

また、私はこれはドスではありません

+0

こんにちはJosefZ、*ドスを削除してください。それは完璧に働いた! – Santo

関連する問題