我正在写一个 Windows
批处理文件和 batch file
应该输出特定文件夹中的文件。我希望文件名写成如下:
filename-yyyymmdd.csv
batch file
代码如下:
cd:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn
bcp "SELECT TOP 100 * FROM xxxx.dbo.xxxxx" queryout c:\test\csv\confirmed.csv -t, -c -S xxxx\xxxxx -U xxx -P xxxxxxxxxx
set mydate=%date:~10,4%%date:~4,2%%date:~7,2%
echo %mydate%
copy c:\test\csv\confirmed.csv c:\test\csvwithdates\confirmed-%mydate%.csv
confirmed-ay18.csv
confirmed-20180528.csv
StackOverflow
上查看了以下问题但我很难实现建议的答案:
最佳答案
动态环境变量DATE
以区域相关格式提供当前本地日期,即根据所用帐户的 Windows 区域和语言选项中设置的国家/地区。维基百科文章 Date format by country列出了世界各国使用的各种日期格式。
所以有必要使用在命令提示符窗口中运行批处理文件时使用的帐户运行 echo %DATE%
并查看输出日期字符串。
输出日期是以缩写的工作日开头还是没有工作日的日期输出?第一个输出日期和下个月是数字还是第一个输出月份和第二天?月份输出是数字还是名称?是月中的某天还是值小于 10 的月份输出前导 0,因此总是两位数还是一位数?
一个非常常用的命令行,用于修改格式为 ddd, dd.MM.yyyy
的区域相关日期字符串与 .
或 /
或任何其他分隔符到 yyyyMMdd
是:
set "LocalDate=%DATE:~-4%%DATE:~-7,2%%DATE:~-10,2%"
ddd, MM/dd/yyyy
要使用的命令行是:
set "LocalDate=%DATE:~-4%%DATE:~-10,2%%DATE:~-7,2%"
echo %DATE%
echo %DATE:~-4%%DATE:~-7,2%%DATE:~-10,2%
echo %DATE:~-4%%DATE:~-10,2%%DATE:~-7,2%
DATE
是速度,因为此字符串替换由 Windows 命令处理器完成非常快。缺点是由于地区/国家依赖性而导致日期格式不同。
for /F "tokens=2 delims==." %%I in ('%SystemRoot%\System32\wbem\wmic.exe OS GET LocalDateTime /VALUE') do set "LocalDate=%%I"
set "LocalDate=%LocalDate:~0,8%"
cmd.exe
.
@echo off
cd /D "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn"
bcp.exe "SELECT TOP 100 * FROM xxxx.dbo.xxxxx" queryout C:\test\csv\confirmed.csv -t, -c -S xxxx\xxxxx -U xxx -P xxxxxxxxxx
for /F "tokens=2 delims==." %%I in ('%SystemRoot%\System32\wbem\wmic.exe OS GET LocalDateTime /VALUE') do set "LocalDate=%%I"
set "LocalDate=%LocalDate:~0,8%"
copy /Y C:\test\csv\confirmed.csv C:\test\csvwithdates\confirmed-%LocalDate%.csv
set "LocalDate="
cd /?
copy /?
echo /?
for /?
set /?
wmic /?
wmic os /?
wmic os get /?
wmic os get localdatetime /?
关于sql-server - 如何获取 Windows 批处理文件中的日期格式为 'yyyymmdd' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50566362/