バッチスクリプトを最適化する

J.グラウンダー

私はこのコミュニティの多くの助けを借りてバッチを作成しましたが(バッチ内のIfステートメントとアプリが認識されなくなっ場合の最初の質問です)、このバッチに追加するプロジェクトが増え、読めなくなります。

私が持っているもの:統計Excelファイルを\ 10.0.0.1 \ MyFolderに送信する統計ツールこれらのファイルを別のネットワークにコピーし、現在の日付に関してこれらのファイルをサブフォルダーに配置する必要があります。

私が書いたもの(それは現在機能しています):

@echo off
setlocal enabledelayedexpansion
net use Z: \\10.0.0.1\MyFolder
set path=Z:\
set year=%date:~10,4%
set month=%date:~4,2%
set day=%date:~7,2%
echo %date%
for /f "delims=" %%a in ('dir *.xlsx /b /a-d "%path%" ') do (
    set "name=%%~na"
    if "!name!"=="!name:PROJECT1=!" (
        if "!name!"=="!name:PROJECT2=!" (
            if "!name!"=="!name:PROJECT3=!" (
                if "!name!"=="!name:PROJECT4=!" (
                    if "!name!"=="!name:PROJECT5=!" (
                        set folder=Empty
                    ) else (
                        set folder=Project5
                        datename=%year%%month%%day%
                    )
                ) else (
                    set folder=Project4
                    if "!name!"=="!name:jour=!" (
                        set datename=%year%%month%%day%
                    ) else (
                        set datename=%year%%month%
                    )
                )   
            ) else (
                set folder=Project3
                if "!name!"=="!name:jour=!" (
                    set datename=%year%%month%%day%
                ) else (
                    set datename=%year%%month%
                )
            )
        ) else (
            set folder=Project2
            if "!name!"=="!name:jour=!" (
                set datename=%year%%month%%day%
            ) else (
                set datename=%year%%month%
            )
        )
    ) else (
        set folder=Project1
        set datename=%year%%month%%day%
    )
    echo !datename!
    IF not exist "\\10.0.0.2\Stats\!folder!\%year%" ( mkdir "\\10.0.0.2\Stats\!folder!\%year%" )
    IF not exist "\\10.0.0.2\Stats\!folder!\%year%\%month%" ( mkdir "\\10.0.0.2\Stats\!folder!\%year%\%month%" )
    copy "%path%%%a" "\\10.0.0.2\Stats\!folder!\%year%\%month%\!datename!_!name!%%~xa"
)
%SystemRoot%\System32\net.exe use Z: /delete

まず、ネットワークドライブをマッピングします。次に、このフォルダーで、PROJECTXおよびその他のデータで名前が付けられた各ファイルをチェックします。ファイルの名前にPROJECTXが見つかった場合は、varフォルダーとdatenameを作成して、ファイルを正しいフォルダーに配置します。年または月の統計サブフォルダーが存在しない場合、バッチがそれらを作成します。最後に、ファイルがすでに存在する場合は上書きして、統計のサブフォルダーにファイルをコピーしています。これはまさに私が必要としているものです。

私の質問は:実際には5つのプロジェクトがあり、数日で約10または15になるので、この構造ではこのプログラムは最適化されていません。サーバーで読みやすく実行しやすくするために何を変更できますか?

編集:

以下のような(\ファイル\ Excelファイル(1つの統計に1つのファイル)と、各プロジェクトの名前が含まれている名前のファイルに含まれている:私は、フォルダCを持ってabc_PROJECT1_def.xlsabc_PROJECT2_def.xls私のバッチは、その名前に関するこれらのファイルをコピーして、など私が希望します例:abc_PROJECT1_def.xlsにコピーされC:\Statistics\PROJECT1\2016\05\abc_PROJECT2_def.xlsにコピーされますC:\Statistics\PROJECT2\2016\05

編集2:

これが私の新しいコードです:

for %%a in (%mypath%*.xlsx) do ( 
    for /f "tokens=2 delims=#" %%b in ("%%a") do ( 
        echo ----%%b----- 
        ECHO mkdir "\10.0.0.2\Stats\%%b\%year%\%month%" 
        ECHO copy "%%a" "\10.0.0.2\Stats\%%b\%year%\%month%\%year%%month%%day%_%%~nxa" 
    ) 
)

正常に動作しているようですが(ご協力ありがとうございます)、最後の質問があります。コピーされたファイルの最終的な名前は、元のファイル名の内容によって異なります。たとえば、元のファイル名に単語が含まれている場合は、jour名前を。で始める必要があり%year%%month%ますが、新しいファイル名がで始まる必要がない場合は%year%%month%%day%datename変数を使用しました次のようなことをするのは正しいですか:

for %%a in (%mypath%*.xlsx) do ( 
    for /f "tokens=2 delims=#" %%b in ("%%a") do ( 
        if "%%~nxa"=="%%~nxa:jour" (
            set datename=%year%%month%%day%
        ) else (
            set datename=%year%%month%
        )
        echo ----%%b----- 
        ECHO mkdir "\10.0.0.2\Stats\%%b\%year%\%month%" 
        ECHO copy "%%a" "\10.0.0.2\Stats\%%b\%year%\%month%\!datename!_%%~nxa" 
    ) 
)
ステファン

なぜすべての顧客に同じコードを何度も書くのですか?それを一般的にする:

@echo off
setlocal enabledelayedexpansion
net use Z: \\10.0.0.1\MyFolder
set path=Z:\
set year=%date:~10,4%
set month=%date:~4,2%
set day=%date:~7,2%
echo %date%

for %%a in (%mypath%*.xls) do (
  for /f "tokens=2 delims=-" %%b in ("%%a") do (
    echo ----%%b-----
    set datename=%year%%month%
    echo "%%~nxa"|find /i "jour" >nul && set datename=!datename!%day%

    ECHO mkdir "\\10.0.0.2\Stats\%%b%\year%\%month%" 
    ECHO copy "%%a" "\\10.0.0.2\Stats\%%b\%year%\%month%\!datename!_%%~nxa"
  )
)

同じことをする必要があります。

それはあなたを示すmkdircopy代わりにそれらを実行した画面上でコマンドを。出力が満足のいくものであれば、2つを削除してくださいECHO

注:%PATH%はシステム変数です。Windowsはそれを使用して、独自のプログラムを検索します。正確にわからない場合は、何をしているのかを変更しないでください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

リモートSSHコマンドをバッチでスクリプト化する最良の方法(Windows)

分類Dev

AzureNSG用にPowershellスクリプトを最適化する

分類Dev

ActiveDirectory監査スクリプトを最適化する

分類Dev

PHPスクリプトを最適化する

分類Dev

スクリプトの速度を最適化する方法は?

分類Dev

"return false" がスクリプトを最適化する方法

分類Dev

タッチデバイス用にWebサイトを最適化する方法

分類Dev

Amazon Product APIエラー429:バッチリクエストのパフォーマンスと信頼性を最適化する方法は?

分類Dev

ビットフラグチェックを最適化する

分類Dev

Excelマクロでクリップボードからのコピーペーストを最適化する

分類Dev

マルチプロセッシング:同時HTTP非同期リクエストのCPU使用率を最適化する

分類Dev

マルチプロセッシング:同時HTTP非同期リクエストのCPU使用率を最適化する

分類Dev

Haskellの「リスト」インデックスを最適化する

分類Dev

jsでスクリプトを最適化する方法は何ですか?

分類Dev

ループ用にDjangoクエリセットを最適化する

分類Dev

正規分布を計算するNumPyスクリプトの最適化

分類Dev

他のスクリプトから最適化モードでPythonスクリプトを実行する

分類Dev

スプライトキットに最適化されたバッチ処理とテクスチャ共有

分類Dev

mysqlリクエストを最適化する方法は?

分類Dev

テキストを検索するクエリの最適化

分類Dev

WindowsのバッチスクリプトでFORループを適切に実行する方法

分類Dev

MacOSXでの再配置後にQtバイナリにパッチを適用するスクリプト

分類Dev

ケースマッチを使用してscalaのリストの比較を最適化する

分類Dev

複数の列/マルチインデックスでパンダクエリを最適化する

分類Dev

バッテリー最適化ホワイトリストは、Dozeがアプリを延期するのを妨げません

分類Dev

PLSQL スクリプトの最適化/チューニング

分類Dev

ブートストラップを最適化するときのブランチエラー

分類Dev

10インチタブレット用にアプリを最適化する方法は?

分類Dev

Androidでチャットアプリを作成するのに最適なサーバーは何ですか?

Related 関連記事

  1. 1

    リモートSSHコマンドをバッチでスクリプト化する最良の方法(Windows)

  2. 2

    AzureNSG用にPowershellスクリプトを最適化する

  3. 3

    ActiveDirectory監査スクリプトを最適化する

  4. 4

    PHPスクリプトを最適化する

  5. 5

    スクリプトの速度を最適化する方法は?

  6. 6

    "return false" がスクリプトを最適化する方法

  7. 7

    タッチデバイス用にWebサイトを最適化する方法

  8. 8

    Amazon Product APIエラー429:バッチリクエストのパフォーマンスと信頼性を最適化する方法は?

  9. 9

    ビットフラグチェックを最適化する

  10. 10

    Excelマクロでクリップボードからのコピーペーストを最適化する

  11. 11

    マルチプロセッシング:同時HTTP非同期リクエストのCPU使用率を最適化する

  12. 12

    マルチプロセッシング:同時HTTP非同期リクエストのCPU使用率を最適化する

  13. 13

    Haskellの「リスト」インデックスを最適化する

  14. 14

    jsでスクリプトを最適化する方法は何ですか?

  15. 15

    ループ用にDjangoクエリセットを最適化する

  16. 16

    正規分布を計算するNumPyスクリプトの最適化

  17. 17

    他のスクリプトから最適化モードでPythonスクリプトを実行する

  18. 18

    スプライトキットに最適化されたバッチ処理とテクスチャ共有

  19. 19

    mysqlリクエストを最適化する方法は?

  20. 20

    テキストを検索するクエリの最適化

  21. 21

    WindowsのバッチスクリプトでFORループを適切に実行する方法

  22. 22

    MacOSXでの再配置後にQtバイナリにパッチを適用するスクリプト

  23. 23

    ケースマッチを使用してscalaのリストの比較を最適化する

  24. 24

    複数の列/マルチインデックスでパンダクエリを最適化する

  25. 25

    バッテリー最適化ホワイトリストは、Dozeがアプリを延期するのを妨げません

  26. 26

    PLSQL スクリプトの最適化/チューニング

  27. 27

    ブートストラップを最適化するときのブランチエラー

  28. 28

    10インチタブレット用にアプリを最適化する方法は?

  29. 29

    Androidでチャットアプリを作成するのに最適なサーバーは何ですか?

ホットタグ

アーカイブ