2017-08-14 7 views
0

バッチスクリプトでは、フォルダから1つのファイルを取り出し、コピー先のフォルダにコピーして、その名前に名前を付け替えますスクリプトがループされたことを示します。基本的に私は時々複数のコンピュータに広がる異なるフォルダの束から何かという名前のファイルを取り出し、それらを新しいフォルダにコピーして作業する必要があります。私はxcopyを読んだことがありますが、使用するように思えましたが、名前の付いた1つのファイルだけをコピーするよう指示するものは見つかりませんでした。複数のフォルダから1つのファイルに対してxcopyまたはcopyを使用する

ECHO off 
SETLOCAL enabledelayedexpansion 

ECHO Note: Your combined permission list cvs can be found in the desktop folder 

SET /A #=-1 
:start 

SET /A #+=1 

:again  
ECHO Please input the file path to the permissionoutput.txt 
SET /p permissionoutputpath= 

SET "sourcefolder=%permissionoutputpath%" 
SET "destinationfolder=C:\Users\kayla\Desktop\HOLDER-CombinedPermissionsLists" 
IF not exist "%sourcefolder%\permissionoutput.txt" Echo file not found&goto again 
copy "%sourcefolder%\permissionoutput.txt" "%destinationfolder%\permissionoutput%#%.txt" 

ECHO Add another file to combine: y or n? 
SET /p addanotherfile= 
if %addanotherfile%==y goto :start 

UPDATE:私は考え出したていないセクションのコメント行で以下のスクリプトのために、これまで持っているもの私が投稿したコードは、リファレンスとして使用するために完全に機能するために答えを修正し

答えて

1
SET /A #=-1 
:start 

SET /A #+=1 

:again  
ECHO Please input the file path to the permissionoutput.txt 
SET /p permissionoutputpath= 

SET "sourcefolder=%permissionoutputpath%" 
SET "destinationfolder=C:\Users\kayla\Desktop\HOLDER-CombinedPermissionsLists" 
IF not exist "%sourcefolder%\permissionoutput.txt" Echo file not found&goto again 
copy "%sourcefolder%\permissionoutput.txt" "%destinationfolder%\permissionoutput%#%.txt" 

ECHO Add another file to combine: y or n? 
SET /p addanotherfile= 
if /i "%addanotherfile%"=="y" goto start 

#は正当な変数名です。あなたのsets - - それはそれはを使用していますとき、それは必要があります最初の値が

次の(あなたが1で開始する場合だけではなく、0にそれを初期化)0です:startを通じて各ループにインクリメントその後、-1に初期化されますBUT文字列内のスペースが重要であるsetコマンドは、set命令に存在する場合に割り当てられる変数名/値に含まれます。 "割り当てを引用する"行に迷っている後続スペースが割り当てられた値に含まれないようにします。

さらに、ファイルが存在するかどうかを確認して、存在しない場合はメッセージを生成し、#を迂回する:againにループバックします。

それ以外の場合は、ファイルをコピーしてください。現在の値#を含むように%#%を組み込むことによって、そのソース名を認識しています(例外なくすべてのバッチ変数は文字列です)。set /a命令は、必要な計算を実行するために文字列からバイナリに変換するだけです。結果を環境内の格納用の文字列に戻します)。

最後に、別のファイルの追加要求を解釈します。 if /iは大文字と小文字を区別しません。ユーザーの応答を直接制御することはできないため、「両側を引用する」と入力すると、「yup sure 'nuff」などの予期しない応答が入力された場合でも構文が破られることはありません。

先頭のコロンはgotoにはではなく、でなければなりません。 callコマンドを使用することをお勧めします。コロンを使用しないと外部ルーチンが呼び出され、コロンはルーチンがこのバッチファイルにあることを意味します。

関連する問題