Добрый день, Эл
У меня есть следующий пакетный сценарий, который просматривает папку, содержащую файлы .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. Когда я повторяю переменную filedate в Win7, я получаю временную метку, сохраненную в! FileDate! стоимость. Но когда я повторяю! FileDate! в Windows Server 2008 он возвращает: ECHO выключено.
Это все еще не работает, даже если я удалю delayedexpansion.
Почему не работает на 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 ... поэтому я настоятельно рекомендую вам считать пакетную обработку немного "устаревшей" ...
Используя Powershell, примерно так:
$today=Get-Date -format d
$files=Get-ChildItem "C:\mfa" -Filter *.sql
foreach ($file in $files)
{
$filename=$file.FullName
$dateCreated=$file.CreationTime | Get-Date -format d
$dateModified=$file.LastWriteTime | Get-Date -format d
write-output "Today is : $today"
write-output "Scanning file : $filename"
write-output "Modified : $dateModified"
write-output "Created : $dateCreated"
if($dateCreated -eq $today)
{
copy-item $filename c:\newLocation
}
write-output "---------------------------------------------"
}
Предполагая сравнение на дату создания. Для сравнения с датой последнего изменения используйте LastWriteTime
вместо того CreationTime
.