我正在编写一个shell脚本来将当前目录的内容备份到带时间戳的子目录./STATES/$DATE
。显然我不想每次备份文件夹时都要重新复制STATES
目录本身,所以我需要以某种方式将其从副本中排除。
这是一个未经测试的shell脚本,显示了我在* nix上的处理方式:
ID="$(date +%Y%b%d%H%M%S)"
COMMITABLE="$(ls | egrep --invert-match ^STATES\$)"
STATE_PATH="$(pwd)/STATES/$ID"
mkdir --parents "$STATE_PATH"
cp $COMMITABLE "$STATE_PATH"
ln -s "$STATE_PATH" PARENT
如何在批处理文件中实现此目的?
答案 0 :(得分:1)
你走了。这来自我自己的脚本:
set now=%date:~-4%-%date:~-10,2%-%date:~-7,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%
rem Before 10:00 o'clock a space is used, this makes it a zero.
set now=%now: =0%
xcopy . copydir-%now% /i
一句警告:这使用美国日期格式。要匹配不同的格式,您必须更改它。当我使用荷兰语和美国系统时,我个人使用此代码:
rem US date versus Dutch: test 5th char is /
if "%date:~-5,1%"=="/" (
rem Date format is mm/dd/yyyy
set now=%date:~-4%-%date:~-10,2%-%date:~-7,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%
) else (
rem Date format is dd-mm-yyyy
set now=%date:~-4%-%date:~-7,2%-%date:~-10,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%
)
答案 1 :(得分:0)
xcopy
的{{1}}选项可用于指定包含要忽略的文件名的文件。我的一个朋友将脚本转换为批处理,如下所示:
/exclude:$FILE