2012-03-22 11 views
0

バケツファイルで作業するのはかなり新しいです。以前に作成した2つのファイルがあり、どちらも独立して動作しています。バッチファイルで2つのFORコマンド(/ f/l)を組み合わせる

私はそれらを組み合わせようとしていますが、私はまだ完全にFORコマンドを理解していません。誰かがこの2つのコードセットを1つにまとめて、可能であれば私の2つのソースから使用したコードをどのように思いついたかを説明することを望んでいました。

  1. ディレクトリ

FOR /R d:\ %%A IN (test.txt) DO copy d:\%username%\Desktop\Test\Resources\test.txt %%A
FOR /R h:\ %%A IN (test.txt) DO copy d:\%username%\Desktop\Test\Resources\test.txt %%A

  1. 内のすべてのサブディレクトリにこのファイルをコピー(この場合、test.txtの中に)別のファイルこのファイルのコピーおよび時間の別のファイルX量の名前を変更します(この場合、5)各連続コピーの名前を1ずつ増やす。

For /l %%1 in (1,1,10) do ( copy test.txt test%%1.txt > nul )

基本的には、選択したファイル(test.txt)をディレクトリ内のすべてのサブディレクトリにコピーしてから、各フォルダにX回コピーし、値を増やして名前を変更します。

test1.txtという

test2.txtという名前予め

test3.txt

ありがとう。

答えて

2

これは実際には非常に単純です。

既に、ソースから各サブディレクトリにコピーする機能するコードがあります。疑似コード:FOR (each directory) DO COPY source to target

ファイルを10回コピーできるコードもあります。最初の手順で各ディレクトリに対してこれを実行します。だから、再び擬似コードでは、このようになります。

FOR (each directory) DO (
    COPY source to target 
    FOR (N=1 TO 10) DO COPY source to targetN 
) 

DOの後に括弧が実際にあることをあなたがブロックを実行するコマンドのバッチを許可する方法を除き、上記の構文のどれもが、本物ではありません複数のコマンド。 (実際にこれを行うための他のテクニックがありますが、括弧はうまく動作します)

欠けている部分は、%% Aターゲット名にインクリメントする数字を挿入する方法です。これは、コマンドラインからHELP FORまたはFOR /?と入力してアクセスできるFORドキュメントの最後に記載されているように、FOR変数修飾子を使用して行います。

修飾子を使用すると、ファイル指定をその構成要素の部分に分解することができます。ファイルは物理的に存在する必要はなく、ファイル仕様は依然として構成部分に分解されることに注意してください。

  • %%~dpnA =ドライブ:\パス\ベース名(拡張子なし)ドットを含む
  • %%~xA =。拡張子、。

すでに増加している数字があります。%%1の代わりに%%Nを使用します。したがって、完全なターゲットは、3つのコンポーネントの連結です:%%~dpnA%%N%%~xA

FOR /R d:\ %%A IN (test.txt) DO (
    copy d:\%username%\Desktop\Test\Resources\test.txt %%A 
    FOR /L %%N IN (1 1 10) DO copy d:\%username%\Desktop\Test\Resources\test.txt %%~dpnA%%N%%~xA 
) 
:すべて一緒にそれを置く

完全なソリューションを提供します

関連する問題