How to create a subfolder based on current date?
本问题已经有最佳答案,请猛点这里访问。
我想使用命令将文件夹(包括子文件夹)的全部内容复制到其他驱动器。
例如:
1 | robocopy c:\evernote\ e:\evernote\<datestamp>\ |
其中
1 | 2018_05_21 |
因此,目标"evernote"文件夹将包含一系列子文件夹,每个日期一个文件夹。 每个子文件夹将包含在该日期从源复制到目标的文件。
对我来说,如果命令是复制,robocopy,xcopy或其他什么,我认为这不重要。 但是,我相信robocopy是最新的,因此最有可能将来对我有用。
顺便说一句:为了保持这一点,不需要允许不同的时区,也不需要"自动化" - 我将自己运行BAT文件,并在以后添加自动化。
谢谢。
因为你正在使用
1 2 3 4 5 6 7 8 9 | @Echo Off Set"sd=C:\EverNote" Set"dd=E:\EverNote" Set"ds=" If Not Exist"%sd%" Exit /B For /F"Tokens=1-3Delims=/" %%A In ('RoboCopy/NJH /L"\|" Null' ) Do If Not Defined ds Set"ds=%%A_%%B_%%C" If Not Defined ds Exit /B RoboCopy"%sd%""%dd%\%ds%" /E |
您可以在行
此脚本使用PowerShell以所需格式获取日期戳:
1 2 3 4 5 | @Echo off for /f"usebackqdelims=" %%D in ( `powershell -Nop -C"(Get-Date).ToString('yyyy_MM_dd')"` ) Do Set"datestamp=%%D" Echo robocopy c:\evernote\ e:\evernote\%datestamp%\ |
样本输出:
1 | robocopy c:\evernote\ e:\evernote\2018_06_02\ |
要以特定格式生成日期而不必担心本地化设置,您可以使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | @echo off for /f %%# in ('wMIC Path Win32_LocalTime Get /Format:value') do @for /f %%@ in ("%%#") do @set %%@ :echo %day% :echo %DayOfWeek% :echo %hour% :echo %minute% :echo %month% :echo %quarter% :echo %second% :echo %weekinmonth% :echo %year% if %day% lss 10 set day=0%day% if %month% lss 10 set month=0%month% set f_date=%year%-%month%-%day% echo %f_date% |
%date%变量格式取决于控制面板中的设置,并且它的值在不同的计算机上会有所不同。有关获取格式化日期的更多方法,您可以查看此内容
在Batch中编写时,您应该能够访问环境变量
这是当前日期的字符串。
您可以尝试使用
请注意,字符串的格式取决于您在计算机上设置日期时间设置的方式。如果更改为在计算机上使用其他格式,