Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何基于当前日期创建子文件夹?_Batch File - Fatal编程技术网

Batch file 如何基于当前日期创建子文件夹?

Batch file 如何基于当前日期创建子文件夹?,batch-file,Batch File,我想使用命令将文件夹(包括子文件夹)的全部内容复制到其他驱动器 例如: robocopy c:\evernote\ e:\evernote\<datestamp>\ 因此,目标“evernote”文件夹将包含一系列子文件夹,每个日期对应一个文件夹。每个子文件夹将包含在该日期从源复制到目标的文件 对我来说,我认为命令是copy、robocopy、xcopy或其他什么都不重要。然而,我相信机器人技术是最新的,因此对我来说最有可能在未来使用 顺便说一句:为了保持简单,不需要考虑不同的时区

我想使用命令将文件夹(包括子文件夹)的全部内容复制到其他驱动器

例如:

robocopy c:\evernote\ e:\evernote\<datestamp>\
因此,目标“evernote”文件夹将包含一系列子文件夹,每个日期对应一个文件夹。每个子文件夹将包含在该日期从源复制到目标的文件

对我来说,我认为命令是copy、robocopy、xcopy或其他什么都不重要。然而,我相信机器人技术是最新的,因此对我来说最有可能在未来使用

顺便说一句:为了保持简单,不需要考虑不同的时区,也不需要“自动化”——我将自己运行BAT文件,稍后添加自动化


谢谢。

批量编写时,您应该能够访问环境变量
%date%

这是当前日期的字符串

您可以尝试使用
echo%date%
查看它的外观,然后拆分并重新组合字符串,使其符合您的需要


不过要注意,字符串的格式取决于您在计算机上设置日期时间设置的方式。如果您更改为在计算机上使用另一种格式,则
%date%
的格式也将更改。

要以特定格式生成日期而不必担心本地化设置,您可以使用以下方法:

@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%变量格式取决于控制面板中的设置,其值在不同的机器上会有所不同。有关获取格式化日期的更多方法,请选中此脚本使用PowerShell以所需格式获取日期戳:

@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%\
样本输出:

robocopy c:\evernote\ e:\evernote\2018_06_02\

因为您正在使用并且乐于使用
RoboCopy
进行复制过程,所以这里有一种方法也可以使用它来确定日期:

@Echo关闭
设置“sd=C:\EverNote”
设置“dd=E:\EverNote”
设置“ds=”
如果不存在“%sd%\”退出/B
对于('RoboCopy/NJH/L“\\\\”Null'中的/F“Tokens=1-3Delims=/”%%A
)如果未定义ds,则不设置“ds=%%A\%%B\%%C”
如果未定义ds退出/B
机器人副本“%sd%”“%dd%”\%ds%”/E

您可以编辑
2
3
行中的位置(但不要删除现有的双引号或引入您自己的双引号,也不要包含带有这些文件夹名称的尾部反斜杠)

从所有有用的回复中,我从这里开始。将整个文本复制到“date.bat”中,保存,并在文件资源管理器中单击文件名。控制台打开和关闭。在末尾添加了“暂停”(在谷歌搜索之后)。我只看到“2018-06-02”。看不到任何早期的“echo”结果,例如:echo%day%”。请告诉我,对不起。我忘了注释字符是冒号。26年前,它曾经是“REM:-)@OldGrantonian-冒号不完全是一个评论,而是一个标签。我应该使用
而不是单个半列。使用标签作为注释有时更干净,处理速度更快,但如果用括号括起来可能会有风险。您可以在此处找到更多信息-@OldGrantonian-给bat文件命名
date
不是一个好主意,因为它可能会与内部日期命令冲突。这完全符合要求中的规定。很高兴为您的bat文件命名请参见您尝试搜索的示例!我不妨删除你在dostips上的帖子。
robocopy c:\evernote\ e:\evernote\2018_06_02\