1
ディレクトリ全体を通過してすべての.sqlファイルをコピーするようにバッチスクリプトを設定する際に助けが必要でした1つのフォルダに保存します。 FOR
ループでこれを簡単にやり遂げることはできますが、異なるディレクトリにある2つ以上のファイルが同じ名前を持っている場合、私は突っ込んでしまいます。私はカウンタを使用してこれを回避しようとしていますが、個々のファイル名に固有のものにするのが難しいです。これまでツリー内のすべての.sqlファイルを同じ名前のファイルのカウンタを使用して1つのフォルダにコピーするバッチファイル
マイコード:たとえば
set /A n=0
for /R %source% %%G in (*.sql) do (
if exist %destination%\sql_files\%%~nxG (
set /A n+=1
set "full=%%G"
set "name=%%~nG"
set "ext=%%~xG"
setlocal enabledelayedexpansion
copy "!full!" "!destination!\sql_files\!name!(!n!)!ext!" >nul
endlocal
) else (
copy "%%G" "%destination%\sql_files\" >nul
)
)
私が持っている場合:
:file1.sql file1(1).sql file1(3).sql file2.sql file2(2).sql
%source%\dir1\file1.sql %source%\dir1\file2.sql %source%\dir2\file1.sql %source%\dir2\file2.sql %source%\dir3\file1.sql
は私がで終わります私が見たい何
は次のとおりです。
file1.sql file1(1).sql file1(2).sql file2.sql file2(1).sql
私は私の答えは、サブルーチンにあるのかもしれませんが、私はかなりその仕事をするためにロジックを把握することはできませんと思いました。どんな助けでも大歓迎です。
の可能性のある重複した[コピーファイルが存在する場合は、別の名前としてファイル](http://stackoverflow.com/questions/13659369/copy-file-as -other-name-if-file-exist) – aschipfl
コアの問題:決してカウンタ「n」をリセットしません。あなたの仕事は私にとって些細なことではないようです。カウンター 'n'はファイル名にリンクされていますが、サブディレクトリーにはリンクされていないので、返されたソースファイルをプリソートする必要があると思います。ターゲットディレクトリは最初は空であることが保証されていますか、またはすでにそこにファイルが存在していますか? – aschipfl
ターゲットディレクトリは空です。 –