给出批处理文件的日期时间和动态路径

15 浏览
0 Comments

给出批处理文件的日期时间和动态路径

我创建了一个批处理文件

@ECHO OFF
"C:\Program Files\Microsoft SQL Server\100\DTS\Binn\dtexec.exe" /FILE "D:\New folder (2)\xslttosql\SSIS-BSMS\SSIS-BSMS\SSIS-BSMS\Package6.dtsx" /REP P >> "D:\TRX_Value.log"
exit 

但是我想要使输出的路径D:\TRX_Value.log可以动态改变,并在文件名上加上时间信息,例如D:\TRX_Value-20130307-144650.log,表示时间为2012/03/07 14:46:50

那么这个是否可行?我需要编写什么样的脚本?

0
0 Comments

BAT文件中处理日期有点棘手。

一个简单的解决方案是使用WMIC LocalTime命令,该命令以一种方便的方式返回当前日期和时间,可以直接使用FOR命令解析它。尝试类似于以下内容的命令:

 OFF
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
  SET /A DT=%%F*10000+%%D*100+%%A
  SET /A TM=%%B*100+%%C
  SET FDT=%DT%-%TM%
 )
ECHO "c:\progs\dtexec" /FILE "d:\fldr\pack.dtsx" /REP P "d:\logs\tr%FDT%.log"

检查结果并根据您的要求更正执行行。

+1 我喜欢看到更多关于wmic的灵活性的例子。它确实是Windows的瑞士军刀。

0
0 Comments

问题的原因是需要在批处理文件中添加日期时间,并且需要动态路径。

解决方法是使用批处理和JScript混合脚本来格式化时间戳,并将其保存在一个变量中。在批处理脚本中,使用for命令调用JScript脚本并将结果保存在变量ts中。然后,使用变量ts在命令中动态生成日志文件路径。JScript脚本使用Date对象来获取当前日期时间,并使用正则表达式来格式化时间戳。

以下是整理后的文章:

为了迎接挑战,这里有一个批处理和JScript混合脚本,可以按照你的要求格式化时间戳。将代码保存为.bat扩展名的文件。

()==() /* (batch + jscript hybrid script init)

:: *** Batch script *****

off

setlocal

for /f %%I in ('cscript /nologo /e:jscript "%~f0"') do set "ts=%%I"

"C:\Program Files\Microsoft SQL Server\100\DTS\Binn\dtexec.exe" /FILE "D:\New folder (2)\xslttosql\SSIS-BSMS\SSIS-BSMS\SSIS-BSMS\Package6.dtsx" /REP P >> "D:\TRX_Value-%ts%.log"

exit /b

:: *** JScript script *****/

var d = new Date();

WScript.echo(d.getFullYear() + /\d{2}$/.exec('0' + (d.getMonth() + 1)) + /\d{2}$/.exec('0' + d.getDate()) + '-'

+ /\d{2}$/.exec('0' + d.getHours()) + /\d{2}$/.exec('0' + d.getMinutes()) + /\d{2}$/.exec('0' + d.getSeconds()));

(dbenham是这类问题的专家。)

0
0 Comments

问题的出现原因是需要在批处理文件中获取当前日期和时间,并将其用作动态路径的一部分。解决方法是使用WMIC命令来获取操作系统的本地日期和时间,并使用子字符串操作提取所需的日期和时间格式。

以下是解决方法的代码示例:

off
setlocal
set "ts="
for /f "skip=1" %%A in ('wmic os get localDateTime') do if not defined ts set "ts=%%A"
... your exe call ... >>"D:\TRX_Value-%ts:~0,8%-%ts:~8,6%.log"

这段代码首先将ts变量设置为空。然后,使用WMIC命令获取操作系统的本地日期和时间,并将结果存储在变量ts中。最后,将ts变量的子字符串用于动态路径中的日期和时间部分。

另一种更简洁的方法是将WMIC命令的输出格式设置为列表,这样就不需要检查ts变量是否未定义。以下是使用列表格式的代码示例:

for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set "ts=%%I"

无论使用哪种方法,WMIC命令都是获取操作系统本地日期和时间的优秀工具。

0