我必须制作执行此操作的.bat文件:
从O:\ siirto复制名称以“ls”开头的所有文件。致C:\ siirto。 输出的名称与源中的名称相同。但它会将当前日期添加到文件名的末尾。
我试过以下只是为了测试,当然它没有工作:D。但它可以更好地解释我试图做的比上面的解释更好。
echo off
xcopy O:\siirto\ls* C:\siirto\ls%date.txt
pause
当然不行。 但这可能与一个.bat文件有关。 或者我必须做所有ls.txt文件他们自己的.bat文件或行。
类似于LS1.txt,LS2.txt LS3.txt
echo off
xcopy O:\siirto\LS1.txt C:\siirto\ls1%date
pause
我不知道%date应该如何添加到代码中,还需要其他代码来编写代码吗?
我还在编程中穿着童鞋......
感谢
答案 0 :(得分:1)
您需要将文件的迭代与FOR
命令和%DATE%
环境变量结合起来。阅读HELP FOR
,注意%〜扩展语法,并尝试以下代码。
for %%a in (o:\siirto\ls*) do (
echo copy "%%a" "c:\siirto\%%~na-%date%%%~xa"
)
仔细测试后,删除echo
命令。
您可以通过将一些可配置信息移出循环来概括您的代码
set src=o:\siirto\ls*
set dest=c:\siirto
for %%a in (%src%) do (
copy "%%a" "%dest%\%%~na-%date%%%~xa"
)
并且,如果%date%
命令返回无效字符,请阅读此SO问题Batch script date into variable的已接受答案,然后将变量更改为包含当前日期的变量格式。< / p>
答案 1 :(得分:0)
%date%
可能包含not allowed in file names字符。尝试下一个与语言环境无关的方法:
@ECHO OFF
SETLOCAL enableextensions
for /F %%g in ('
wmic OS get LocalDateTime /value^|findstr "="
') do for /F %%G in ("%%g") do set "_%%G"
set "_LocalDateTime=%_LocalDateTime:~0,8%"
for /F "delims=" %%G in ('
dir /b O:\siirto\ls*.txt
') do echo copy /B "O:\siirto\%%G" "C:\siirto\%%~nG_%_LocalDateTime%%%~xG"
资源(必读):
答案 2 :(得分:0)
默认情况下,变量%date%
包含当前日期 - 但日期的格式取决于用户设置,因此它可能包含分隔符,例如/-.
可能有日期名称和空格分隔符,可以使用抑制前导零的日期编号和月份编号。
有很多关于将日期字符串格式化为可用格式的文章 - 建议格式为yyyymmdd,因为该格式按名称按时间顺序自动生成。
请注意,使用变量date
并不是一个好主意,因为该日期是由系统建立和维护的,任何用户设置都将覆盖假设的系统设置。几乎使用任何其他有效变量名称(同一条评论适用于random
和time
等。)
因此,假设您以所需的格式将日期分配给变量today
,然后
for %%a in (o:\siirto\ls*.txt) do (
echo(copy "%%a" "c:\siirto\%%~na%today%%%~xa"
)
将执行所需的副本。 %%~na
表示%%a
和%%~xa
扩展部分中文件名的名称部分。通常应使用%varname%
访问变量。文件名为"enclosed in quotes"
,以确保文件名中的分隔符(例如 Space )被视为不具有分隔符特殊含义的常规字符。
为了测试目的,所需的COPY命令仅为ECHO
。 在您确认命令正确后,将ECHO(COPY
更改为COPY
以实际复制文件。附加>nul
以取消报告消息(例如1 file copied
)
答案 3 :(得分:0)
您可以使用forfiles
1
forfiles /P O:\siirto /M ls*.txt /C "cmd /c copy @path C:\siirto\@fname-%date:~6,4%-%date:~3,2%-%date:~0,2%.txt"
此处forfiles
查看指定路径/P
中与掩码/M
匹配的所有文件,然后对找到@path
的每个文件运行命令以将其复制到附加日期的新位置。 @fname
这里只提供没有路径或扩展名的文件名。
%date%
变量通常会产生25/06/2015,甚至是2015年6月25日星期四,具体取决于您的设置。这就是您需要指定部分内容的原因。
%date:~6,4%
从日期的第七位到第11位选择(计数从0开始),产生年份。 %date:~3,2%
为您提供月份(或根据您来自世界的哪一天),%date:~0,1%
为您提供一天(或一个月,同样取决于您所在的位置)。
您可能需要稍微调整一下以获得所需的结果。