2017-01-09 14 views
-2

私は複数の.pdfファイルを1つのディレクトリに配置しています。ファイル名とディレクトリに基づいてテキストファイルを作成する - バッチ

ディレクトリ:のテストスコア_スコア_9999999999_smith.pdf`のファイル名の例。

私がするファイル名を解析する必要があります:9999999999|test score|smith|||||||

そして私も先頭に@シンボルとテキストファイルにファイルの場所を印刷する必要があります。

だから、テキストファイルに次のようになります。@D:\TEMP\test score_test score _9999999999_smith.pdf

テキストファイル内のファイル出力は次のようになります。

9999999999|test score|smith||||||| 
@D:\TEMP\test score_test score _9999999999_smith.pdf 

私はディレクトリのみを出力する限りになりましたファイル名をテキストファイルに変換します。

今、私はちょうど@をディレクトリ/ファイル名の先頭に追加しています。

私はこれを試してみた
dir /s/b *.pdf > C:\temp\test.txt 

@echo off 
set [email protected] 
dir *.pdf /b /s DO ECHO %var1%*.pdf > C:\temp\test.txt 

私はこれを試してみた:

dir *.pdf /b /s ren *.pdf  "@"????????????????????????????????????????????????????????.pdf >>  C:\temp\test.txt 
+0

質問をlogfile.txtという**書籍、ツール、ソフトウェアライブラリ、チュートリアル、その他のオフサイトリソース**を推薦または見つけ出すことは、批判的な回答や迷惑メールを引き付ける傾向があるため、スタックオーバーフローのトピックではありません。代わりに、[問題を説明する](http://meta.stackoverflow.com/questions/254393)、これを解決するためにこれまでに何が行われているか。 – nyedidikeke

+0

コマンド 'for' resp。 'for/f'はあなたが望むことをすることができます。あなたの質問はちょっとあいまいです.2つの文字列 'test score'は常に等しいのですか? – LotPings

+0

ありがとうございます。テストスコアは必ずしも同じではありません。私はお詫び申し上げます、私はファイル名から最初の_の後に2番目のテストスコアまたは名前をプルする必要があります。 – user7395572

答えて

0
@Echo off&SetLocal EnableExtensions 
PushD "C:\path\to\your\pdffolder" 
Set "FileOut=X:\path\to\LogFile.txt" 
:: initially clear Logfile 
Type Nul >"%FileOut%" 
:: first for enumerates the pdfs, second for /f parses the name 
:: to tokens %%A .. %%D delimited by underscore 
For %%F in (*.pdf) do For /f "tokens=1-4 delims=_" %%A in ("%%~nF" 
) Do (
>>"%FileOut%" Echo:%%C^|%%B^|%%D^|^|^|^|^|^|^| 
>>"%FileOut%" Echo:@%%F 
) 

サンプルが私たちを求めて

8888888888|test score |miller||||||| 
@test score_test score _8888888888_miller.pdf 
9999999999|test score |smith||||||| 
@test score_test score _9999999999_smith.pdf 
7777777777|test score |baker||||||| 
@test score_test score _7777777777_baker.pdf 
関連する問題