2

ディレクトリ内のすべてのファイル (バッチ ファイル自体を除く) の 3 つのフィールドを持つ .csv ファイルを生成する Windows バッチ ファイルを作成する必要があります。

田畑:

  1. ファイル名 (これにはコンマを含めることができます!)
  2. 作成日
  3. 変更日

バッチ ファイルはディレクトリから実行され、現在のディレクトリ内のファイルの .csv ファイルを生成することを認識している必要がありますが、バッチ ファイルまたは生成された .csv ファイルを一覧表示しないことに注意してください。

Powershell、vbscript などは私の状況では実行できないため、Windows バッチ ファイルである必要があります。

編集:

これが私が試した2つの主なアプローチです。

最初の試み:裸のファイル名を「temp1.tmp」に、作成されたタイムスタンプを含むファイル リストを「temp2.​​tmp」に、変更されたタイムスタンプを含むファイル リストを「temp3.tmp」に分けてみました。

DIR /B /A:-D-H | FIND /V "Print Files.bat" | FIND /V "File List" | FIND /V "temp"  > "temp1.tmp"
DIR /A:-D-H /T:C | FIND /V "Print Files.bat" | FIND /V "File List" | FIND /V "temp"  > "temp2.tmp"
DIR /A:-D-H /T:W | FIND /V "Print Files.bat" | FIND /V "File List" | FIND /V "temp"  > "temp3.tmp"

MORE +5 "temp2.tmp" > "temp4.tmp"
COPY /Y "temp4.tmp" "temp2.tmp"
MORE +5 "temp3.tmp" > "temp4.tmp"
COPY /Y "temp4.tmp" "temp3.tmp"
DEL /F/Q "temp4.tmp"

しかし、このアプローチの問題は、一度に複数のファイルから行を読み取る方法がわからないことです。これは私が見つけた最も近いものですが、それは1つのファイルからのものです:

FOR /F "delims=" %%i IN (temp1.tmp) DO (
    ECHO."%%i" >> "File List.csv"
)

2 回目の試行:一時ファイルの使用を避けようとしましたが、役に立ちませんでした。

FOR %%i IN (*.*) DO @ECHO "%%~ni%%~xi",%%~ti >> "File List.csv"

この 2 番目の方法の問題は、バッチ ファイル名が除外されず、ファイル作成のタイムスタンプが提供されないことです。

これらのいずれかを機能させるための解決策、またはまだ試していないアプローチはありますか?

4

5 に答える 5

5

これを試して:

@ECHO OFF &SETLOCAL
(FOR /f "delims=" %%a IN ('dir /b /a-d') DO (
    FOR /f "tokens=1-3*" %%x IN ('dir /a-d /tc "%%~a"^|findstr "^[0-9]"') DO (
        ECHO "%%a",%%~ta,%%x %%y %%z
    )
))>DIR.csv
TYPE DIR.csv
于 2013-08-06T21:35:26.483 に答える
2

このようなものがうまくいくかもしれません:

@echo off

setlocal EnableDelayedExpansion

(
  echo "Name","Modification Time","Creation Time"
  for %%f in (*) do (
    set "name=%%~nxf"
    if not "!name!"=="%~nx0" (
      set "mtime=%%~tf"
      for /f "tokens=1-3" %%d in (
        'dir /t:c "!name!" ^| find /i "!name!"'
      ) do set "ctime=%%~d %%~e %%~f"
      echo "!name!","!mtime!","!ctime!"
    )
  )
) > output.csv
于 2013-08-06T21:33:58.047 に答える
1

リストに新しく作成されたリスト ファイルを含まないコマンド ライン ワン ライナーを次に示します。

(for /f "tokens=1-4*" %A in ('dir /a-d /tc^|findstr "^[0-9]"') do @if "%E" neq "FileList.csv" echo "%E",%A %B %C,%~tE)>"FileList.csv"

それ自体または新しく作成されたリスト ファイルを含まないバッチ スクリプトを次に示します。

@echo off
>"FileList.csv" (
  for /f "tokens=1-4*" %%A in (
    'dir /a-d /tc^|findstr "^[0-9]"'
  ) do if "%~f0" neq "%%~fE" if "%%E" neq "FileList.csv" echo "%%E",%%A %%B %%C,%%~tE
)
于 2014-12-25T14:49:07.903 に答える
0

ディレクトリ リストを CSV に書き込む1 行のPowerShell コマンド

于 2014-09-17T21:29:19.660 に答える