Batch file 如何通过Windows批处理脚本输出扩展名为的文件名?

Batch file 如何通过Windows批处理脚本输出扩展名为的文件名?,batch-file,Batch File,我有以下.bat脚本: 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

我有以下.bat脚本:

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
)
此脚本使用csvde实用程序从Windows AD域控制器中提取数据并将其写入文件。文件名和域控制器IP存储在文件
files\u DCs\u map.txt
中。此文件中的示例行是:

some_DC|some_IP

脚本可以工作,但输出的文件名不正确。我希望文件名的格式为
.csv
。它当前以
fileext
的形式输出文件名。也就是说,它没有正确解释变量fileext。例如,它输出文件名
some_DC20171128fileext
。我希望此文件名改为
some_DC20171128.csv
。如何实现这一点?

批处理中的正则变量需要用百分号括起来。您已将文件名指定为

%%G%today%fileext
%%G
是循环变量
%today%
是日期,如您所料
filext
,缺少百分比,只是一个文本。你需要这样说:

%%G%today%%fileext%