2011-10-06 19 views
0

ファイル名とタイムスタンプを含むファイルを解析するバッチスクリプトがあります。バッチスクリプト - FOR/Fで無効な構文

:MAIN 

SETLOCAL EnableDelayedExpansion 

FOR /F "tokens=1,2,4 skip=7" %%A in (C:\list_of_psa_files.txt) DO 
@echo %%A %%B %%C 

exit 

ファイルC:私はそれがメッセージ無効な構文で失敗している私のスクリプトを実行していたときの\ list_of_psa_files.txtは、しかし、その中に次のデータ

Volume in drive C is Windows XP 6.6 
Volume Serial Number is AC12-84AA 

Directory of C:\Test 

10/05/2011 03:17 PM <DIR> . 
10/05/2011 03:17 PM <DIR> .. 
10/05/2011 01:21 PM 4,393 1-16332-1008261.psa 
10/05/2011 01:21 PM 4,863 1-16332-1011698.psa 
10/05/2011 01:21 PM 4,793 1-16332-1023151.psa 
10/05/2011 01:21 PM 4,916 1-16332-1035695.psa 
10/05/2011 01:21 PM 4,524 1-16332-1037029.psa 
10/05/2011 01:21 PM 4,235 1-16332-1049340.psa 
10/05/2011 01:21 PM 3,135 1-16332-1049926.psa 
10/05/2011 01:21 PM 4,657 1-16332-1054756.psa 

を持っています。誰かが私がどこに間違っているのか理解してもらえますか?

私がやろうとしているのは、古いファイルの新しいファイルに拡張子を付けずに日付、時刻、ファイル名を取得することだけです。

ありがとう、ありがとうございます。

サンダーズ。

答えて

2

実際にに別の行にechoがある場合(編集プロセスの成果ではありません)、それはできません。

FOR /F "tokens=1,2,4 skip=7" %%A in (C:\list_of_psa_files.txt) DO (
    @echo %%A %%B %%C 
) 

は、私はあなたが表示され、ファイルやスクリプトを作成するときに、私が取得:

私はその後、私の提案のバリアントに変更し
The syntax of the command is incorrect. 

、それが出力あなたは1行かのいずれかを使用する必要があります。

10/05/2011 01:21 4,393 
10/05/2011 01:21 4,863 
10/05/2011 01:21 4,793 
10/05/2011 01:21 4,916 
10/05/2011 01:21 4,524 
10/05/2011 01:21 4,235 
10/05/2011 01:21 3,135 
10/05/2011 01:21 4,657 

期待通り。 1行で次のように入力すると、同じ出力が表示されます。

FOR /F "tokens=1,2,4 skip=7" %%A in (C:\list_of_psa_files.txt) DO @echo %%A %%B %%C 
+0

これは間違いありません。ありがとうPaxdiablo! – user982201

+0

しかし、私の出力を別のファイルにリダイレクトしようとすると、ただ1行しか得られません。このように - 10/05/2011 01:10 24,971そのコードはSETLOCAL EnableDelayedExpansionです。 :MAIN FOR/F "tokens = 1,2,4 skip = 5" %% A in(C:\ list_of_psa_files) .txt)DO(@echo %% A %% B %% C> C:\ list_of_file_ts.txt) exit – user982201

+0

これは別の質問@ user982201ですが、とにかくお手伝いします。あなたはすべての反復のために 'blah blah> out.txt'をやっています。言い換えれば、各反復_ファイルは、最後のものだけを取得することを意味します。それを上書きするのではなく、 '>'の代わりに '' ''を使い、各反復がそのデータを上書きするようにします。 – paxdiablo