2

*.sql; *.xep; *.dll; *.aspx; *.gifすぐに本番環境に送信するコードファイルを含むファイルリポジトリがあります。このリポジトリには、PRODに移動するための最新のコードファイルを含むメインフォルダーがありますが、コードを使用してPRE-PRODに送信されたすべての変更フォルダーもあります。以下の画像でメインのリポジトリ構造を確認できます。

ここに画像の説明を入力してください

プロトコルは、PRE-PRODに何かを送信するたびに、変更フォルダーを作成し、それをメインリポジトリに配置し、メインフォルダーも更新するというものですが、2番目の部分を実行するのを忘れることがあります。私が自動化された方法でやろうとしていたのは、メインフォルダーと変更フォルダーに同じ名前のファイルがあり、それらが必要とする変更日が同じである場合(少なくとも)、この特定の交差は簡単に実行できますExcelまたはSQLでさえ。*.sql; *.xep; *.dll; *.aspx; *.gifしたがって、最後に、私が助けを必要としていた:Pは、すべてメインリポジトリディレクトリとサブディレクトリからのcsvファイル形式(値を区切る';'、行を区切る' \ n')になります。

これまでのところ、私はこのdosコマンドでテストしました:

dir *.sql *.xep *.aspx *.dll *.gif /s /a:-D>listWithDate.txt

これは私にリストを取得します。つまり、aiがこの方法でフォーマットしたlistWithDate.txtです。

2012/03/19[2sapces]14:27[Nspaces]4.006[1space][filename]
2012/03/19[2sapces]14:27[Nspaces]10.006[1space][filename]

したがって、2つのうちの助けが必要でした:

ファイル名と日付をcsv形式のファイルにリストするバッチ

また

listWithDate.txtをcsv形式のファイルにフォーマットするバッチ

よろしくお願いします;)

4

2 に答える 2

3

次のワンライナーは、ファイルのタイムスタンプ(単一の単位として)、ファイルサイズ(バイト単位)、およびファイル名をCSV行セットとして出力します。

>csvfile.txt (FOR %R IN (*.sql *.xep *.aspx *.dll *.gif) DO @ECHO "%~tR";%~zR;"%~nxR")

注:これは、コマンドプロンプトから直接実行されることになっています。これをバッチスクリプトに入れたい場合は、すべての%文字を2倍にします。

于 2012-05-18T18:36:14.377 に答える
2

うーん、これはうまくいくかもしれないと思います:

    @echo off
    echo.
    if exist newfile.csv del newfile.csv
    for /f "tokens=1-4* delims= " %%a in (listWithDate.txt) do (
        rem %%a is date %%b is time, %%c is filesize, %%d is filename
        rem use %%b or %%c as needed
        echo %%d, %%a >> newfile.csv
    )

それはあなたが探しているファイルを生成するはずです、これがあなたのために働くかどうか私に知らせてください

于 2012-05-18T14:47:52.323 に答える