美好的一天
我有以下批处理脚本循环遍历包含 .sql 文件的文件夹。当它找到一个带有今天日期时间戳的 .sql 文件时,它会将该文件复制到一个新目录中。
@echo off
setlocal enableextensions enabledelayedexpansion
set "currentDate=%date:~0,10%"
for %%g in ("c:\mfa\*.sql") do (
set "fileDate=%%~tg"
set "fileDate=!fileDate:~0,10!"
if "!fileDate!"=="%currentDate%" (
copy "%%~fg" "c:\newLocation"
)
)
我的问题:
这在 Windows 7 上很好用,但在 Windows Server 2008 上不行。当我在 Win7 上回显 filedate 变量时,它会为我提供保存在 !fileDate! 中的时间戳!价值。但是当我回显!fileDate!在 Windows Server 2008 中,它返回:ECHO 已关闭。
即使我删除了延迟扩展,这仍然不起作用。
为什么它不能在 Server 2008 上运行?
===================== 更新 -
Powershell 错误
The term 'test.ps1' is not recognized as the name of a cmdlet, function, script file, or operable pro
elling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:9
+ test.ps1 <<<<
+ CategoryInfo : ObjectNotFound: (test.ps1:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
我同意 MDMarra 关于使用 Powershell 的评论。
我们在 2014 年,您的平台是 Windows 2008 Server...所以我强烈建议您考虑 Batch 有点“过时”...
使用 Powershell,如下所示:
假设在创建日期进行比较。要与上次修改日期进行比较,请使用
LastWriteTime
而不是CreationTime
.