有人能给我指出正确的方向吗?
我需要安排一个 bat 文件,该文件会从名称每天都会更改的文件夹中复制文件,并且我需要从昨天的文件夹中复制这些文件。例如,如果今天是 2010 年 2 月 12 日,我需要从文件夹 20100211 复制文件,而明天我需要从文件夹 20100212 复制文件。
有任何想法吗?
答案1
在批处理文件中,这几乎是不可能的,因为您无法选择格式。但是,如果您在这台计算机上安装了 PowerShell,则可以使用 Get-Date:
$now = get-date -format yyyyMMddTHHmmss
$fileName = $now + "_something.txt"
Copy-Item $source -Destination $fileName
答案2
将这些 YYYYMMDD 目录的父目录同步到另一个目录就够了吗?这样,您就不必担心名称更改了。 Robocopy是一款出色的命令行工具,用于将一个目录镜像到另一个目录。从 Vista 开始,它已成为标准命令之一。如果您仍在使用 XP,则可以将其作为Windows Server 2003 资源工具包工具。如果您不想复制父目录中的所有内容,您可以在 robocopy 作业文件中指定要忽略的文件和/或目录。
答案3
这是一个批处理脚本,它将文件从 C:/FromFolder/yyyymmdd 复制到 C:/ToFolder(yyyymmdd 是昨天的日期)。
# Script CopyYesterday.txt
var str yesterday, list, file
set $yesterday = addtime(diff("-1000000")) # "-1000000" = subtract 1 day, 00 hrs, 00 mins, 00 secs
chex "8]" $yesterday > $yesterday
# We now want to copy files from C:/FromFolder/$yesterday to C:/ToFolder.
lf -n "*" ("C:/FromFolder/"+$yesterday) ($ftype=="f") > $list
while ($list <> "")
do
lex "1" $list > $file
system -s "copy /Y" ("\""+$file+"\"") "C:/ToFolder"
done
复制并保存脚本到文件 C:/Script/CopyYesterday.txt 中。然后安排此命令每天运行。
"C:/biterScripting/biterScripting.exe" "C:/Script/CopyYesterday.txt"
您需要安装 biterscripting (http://www.biterscripting.com)。它非常适合灵活的文件管理。addtime、lf 命令等的帮助页面位于其站点,或者您也可以在 biterscripting 中执行“help addtime”等。