2017-11-08 5 views
0

私は、次の.batスクリプトを持っている:Windowsバッチスクリプトによる拡張子付きファイル名の出力方法は?

FOR /f "skip=1" %%x IN ('wmic os get localdatetime') DO IF NOT DEFINED MyDate SET MyDate=%%x 
SET today=%MyDate:~0,4%%MyDate:~4,2%%MyDate:~6,2% 

SET fileext=".csv" 

SET Username=some_user 
SET Password=some_password 
SET Domain=some_domain 

SET LDAPport=3268 

SET LDAPAttributeList=sAMAccountName 
SET LDAPfilter="(&(objectClass=User)(objectCategory=Person))" 

FOR /F "tokens=1,2 delims=|" %%G IN (files_DCs_map.txt) DO (
    csvde -f %%G%today%fileext -r %LDAPfilter% -l %LDAPAttributeList% -t %LDAPport% -s %%H -b %Username% %Domain% %Password% -u 
) 

このスクリプトは、Windows ADドメインコントローラからデータを抽出し、それをファイルに書き込むためにCSVDEユーティリティを使用しています。ファイル名とドメインコントローラIPはファイルfiles_DCs_map.txtに格納されています。このファイルのサンプル行は次のとおりです。

some_DC|some_IP 

スクリプトは機能しますが、不正なファイル名が出力されています。ファイル名は<some_DC><today>.csvのようにしたい。現在、ファイル名は<some_DC><today>fileextの形式で出力されています。つまり、変数fileextを正しく解釈していません。たとえば、ファイル名はsome_DC20171128fileextです。代わりにこのファイル名をsome_DC20171128.csvにします。どうすればこれを達成できますか?

答えて

1

バッチ内の通常の変数は、パーセント記号で囲む必要があります。ファイル名を

%%G%today%fileext 

%%Gと指定しました。 %today%は、期待どおりに動作する日付です。 filextは、パーセントがないので、単なるリテラルです。あなたはこのように置く必要があります:

%%G%today%%fileext% 
関連する問題