2011-06-30 7 views
0

ディレクトリには100個のフォルダがあり、各フォルダ内には(filename).iniというファイルがあります。特定のフォルダ内のすべてのすべてのファイルにfoldernameを添付する

私がする必要があるのは、(foldername)-(filename).txtファイルになるように.iniファイルに親フォルダ名を添付することだけです。

これを行うことができるバッチスクリプトはありますか?私はバッチファイルが初めてです。だから、どんな助けも大歓迎です!

+0

どのオペレーティングシステムでこれが必要ですか? –

+0

Windowsの場合、[this](http://superuser.com/questions/205083/command-line-recursive-rename-move-in-windows)のブログエントリから開始できます。Linuxの場合は[この他の1つ]を参照してください。 (http://ubuntuforums.org/showthread.php?t=679657)。 – ascanio

答えて

1
setlocal enabledelayedexpansion 

for /R %%a in (*.ini) do (
    set relativepath=%%a 
    set relativepath=!relativepath:%cd%\=! 
    set newname=!relativepath:\=-! 
    set newname=!newname:.ini=.txt! 
    ren !relativepath! !newname! 
) 

endlocal 
+0

+1しかし、 'CD'は' C:\ 'に追加されたスラッシュで解決されるので、ルートディレクトリから起動すると失敗します – jeb

0

これはどのフォルダおよびフォルダ構造でも機能します。現在のディレクトリ内のすべてのiniファイルの場合

@echo off 
setlocal enabledelayedexpansion 
for /R %%a in (*.ini) do (
    set foldername=%%~pa 
    set foldername=!foldername:\=_! 
    echo ren "%%~fa" "(!foldername!)-%%~na.txt" 
) 

~p修飾子を使用して、ファイル名からパスを抽出し、 :=修飾子を使用して、バックスラッシュのすべての通貨を下線に変更します。最終的に元のiniファイルの名前を変更します。テストの後

ECHO

を削除するには、より多くの情報のためHELP FORHELP SETを参照してください。

関連する問題