bat 批处理命令创建带日期和时间的文件夹

bat 批处理命令创建带日期和时间的文件夹

创建bat文件,文件名可自定义,如 mkdir_by_datetime.bat
文件内容如下:// mkdir_by_datetime.bat

:: 关闭终端回显
@echo off

set CURRENT_DATE_STRING=%date:~0,4%%date:~5,2%%date:~8,2%
echo CURRENT_DATE_STRING=%CURRENT_DATE_STRING%
set CURRENT_TIME_STRING=%time:~0,2%_%time:~3,2%_%time:~6,2%
echo CURRENT_TIME_STRING=%CURRENT_TIME_STRING%
set CURRENT_DATE_TIME_STRING=%CURRENT_DATE_STRING%_%CURRENT_TIME_STRING%
echo CURRENT_DATE_TIME_STRING=%CURRENT_DATE_TIME_STRING%

:: 创建文件夹
md %CURRENT_DATE_TIME_STRING%
pause

注意:以上脚本存在问题,在时间的小时数小于10时中间存在空格,
其执行过程打印如下,执行后,会在当前工作目录创建名为“20220714_” 和 “9_51_42”的两个文件夹

CURRENT_DATE_STRING=20220714
CURRENT_TIME_STRING= 9_51_42
CURRENT_DATE_TIME_STRING=20220714_ 9_51_42    ## 此处‘20220714_’ 和 ‘9_51_42’中间存在空格,实质上创建了‘20220714_’ 和 ‘9_51_42’两个文件夹
请按任意键继续. . .

针对上述问题进行了修正,修正后的脚本如下:// mkdir_by_datetime.bat

:: 关闭终端回显
@echo off
:: 以下所有 echo 开头的行均可删除,在此脚本中 echo 仅为显示用
set CURRENT_DATE_STRING=%date:~0,4%%date:~5,2%%date:~8,2%
echo CURRENT_DATE_STRING=%CURRENT_DATE_STRING%
set "TIME_STRING_FILL_ZREO=%time: =0%"
echo TIME_STRING_FILL_ZREO=%TIME_STRING_FILL_ZREO%
set CURRENT_TIME_STRING=%TIME_STRING_FILL_ZREO:~0,2%_%TIME_STRING_FILL_ZREO:~3,2%_%TIME_STRING_FILL_ZREO:~6,2%
echo CURRENT_TIME_STRING=%CURRENT_TIME_STRING%
set CURRENT_DATE_TIME_STRING=%CURRENT_DATE_STRING%_%CURRENT_TIME_STRING%
echo CURRENT_DATE_TIME_STRING=%CURRENT_DATE_TIME_STRING%

:: 创建文件夹
md %CURRENT_DATE_TIME_STRING%
pause

其执行过程打印如下,执行后,会在当前工作目录创建名为“20220714_09_57_49”的文件夹

CURRENT_DATE_STRING=20220714
TIME_STRING_FILL_ZREO=09:57:49.49
CURRENT_TIME_STRING=09_57_49
CURRENT_DATE_TIME_STRING=20220714_09_57_49
请按任意键继续. . .

注:也可将以上命令直接复制后粘贴在cmd窗口中,会自动在cmd的当前工作目录创建对应日期文件夹。

1 建bat文件自动执行复制,删除命令。 例1:以下是复制cd.dll文件windows\system32的bat文件内容: copy cd.dll %windir%\system32 例2:下面一行是卸载windows\system32目录中的cd.dll,即把上面复制的文件删除: del %windir%\system32\cd.dll 例3:删除download文件夹中的文件,例子如下: del C:\DOWNLOAD\*.* [注意]:这里的del命令只能删文件,不能删文件夹。要删除文件夹得用rd命令,如下: rd Filemon 这里filemon文件夹bat文件在同一目录下,就省去具体路径了。但rd只能删除空文件夹. 要删除文件夹及其里面的所有子目录文件,用rd命令/s /q参数, /s参数表示删除该文件夹及其下面的子目录文件 /q参数表示,不需要确认 范例如下: rd 123 /s /q 2 创建文件夹 例:在E:\My documents下面一次创建3个新文件夹:Newfolder1,Newfolder2,Newfolder3 @echo off md "E:\My documents\Newfolder1" md "E:\My documents\Newfolder2" md "E:\My documents\Newfolder3" 3 执行程序,打开文件 例1:执行C盘下的WinWord.exe程序 start C:\WinWord.exe 例2:用某个程序打开某个文件,如用TheWorld.exe打开一个htm文件 start d:\TheWorld\TheWorld.EXE C:\我有一个恋爱.htm [注意]:不论是程序或文件路径中含有空格,都必须用引号括起来: start d:\TheWorld\TheWorld.EXE "e:\My documents\我有一个恋爱.htm" 所有程序中的引号不能是全角的,必须用半角的格式,所以输入引号前最好关闭汉字输入系统 XCOPY 还有众多的功能, 是加参数来完成的。上面的/s /e 参数的作用分别是把子目录空目录都复制过去,一些使用举例参数说明如下: 1、如只是单纯地复制 E:\ 盘上所有文件到 D:\ 盘上,就输入“ xcopy e:\*.* d: /s /h "就行啦!如果在复制过程中,你不要他复制文件啦!那就按键盘热键“Ctrl " +"Pause /break" 二个热键 来中断复制。 2、如果想把E:\ 盘上所有文件复制到D:\盘上,分为今天复制一点,明天再接着复制一些,后天再接着复制一些。或者是某种原因上次没有复制完成,今天想接着复制。(这种情况是经常在复制文件中出现的)那可怎么办才好呢? 那就输入“ xcopy e:\*.* d: /s /h /d /y ”就行啦。他能查出那些文件是已经复制过去啦,那些文件还没有复制过去的。 3、当然我们也会碰到这种情况,一些文件我们已经修改过啦!网上面又有最新版本的啦。原来备份的那份文件我们要及时更新啦。那怎么才能同步更新呢?当然我们可以把最新的好份文件复制过去,这也是一种解决办法。 如果修改的文件有很多的,自己到时候也记不清楚那份文件是更新过的。这么多的原来备份的那份文件都要更新,都要复制过去,可不是件省力气的活,而且容易出错一些文件被忘记啦! 那上面一样也同样输入" xcopy e:\*.* d: /s /h /d /y "就行啦! 4、还有一种情况我们经常也碰到的,因为复制某个文件出错或者这个文件在使用中,而停止了复制工作,(比如,复制C 盘上的 windows xp )我们这时候想跳过某个出错的文件某个正在使用中文件而继续复制其他文件。 在多加入一个参数" /c "就是 " xcopy e:\*.* d: /s /h /d /c /y "就行啦! 5、有时候我们想XCOPY 变为自动复制,并且复制完成后关闭电脑,可以建立一个批处理文件,新建文本文档,更名为XCOPY.BAT 当然扩展名原来是TXT 格式的要更名为BAT 在这个 XCOPY.BAT 中输入 xcopy e:\*.* d: /s /h /c /y shutdown -s 然后双击xcopy.bat 运行它,你这时候可以出去玩啦。电脑会自己复制备份完成文件然后自动关闭电脑。 XCOPY source [destination] 参数(如 /s /e) source 指定要复制的文件。 destination 指定新文件的位置/或名称。 /A 只复制有存档属姓集的文件, 但不改变属姓。 /M 只复制有存档属姓集的文件, 并关闭存档属姓。 /D:m-d-y 复制在指定日期或指定日期以后改变的文件。 如果没有提供日期,只复制那些源时间 比目标时间新的文件。 /EXCLUDE:file1[+file2][+file3]... 指定含有字符串的文件列表。如果有任何 字符串与要被复制的文件的绝对路径 相符,那个文件将不会得到复制。 例如,指定如 \obj\ 或 .obj 的字符串会排除 目录 obj 下面的所有文件有 .obj 扩展名的文件。 /P 创建每个目标文件前提示。 /S 复制目录子目录,除了空的。 /E 复制目录子目录,包括空的。 与 /S /E 相同。可以用来修改 /T。 /V 验证每个新文件。 /W 提示您在复制前按键。 /C 即使有错误,也继续复制。 /I 如果目标不存在,又在复制一个以上的文件, 则假定目标一定是一个目录。 /Q 复制时不显示文件名。 /F 复制时显示完整的源目标文件名。 /L 显示要复制的文件。 /G 允许将没有经过加密的文件复制到 不支持加密的目标。 /H 也复制隐藏系统文件。 /R 改写只读文件。 /T 创建目录结构,但不复制文件。不 包括空目录或子目录。/T /E 包括 空目录子目录。 /U 只复制已经存在于目标中的文件。 /K 复制属姓。一般的 Xcopy 会重设只读属姓。 /N 用生成的短名复制。 /O 复制文件所有权 ACL 信息。 /X 复制文件审核设置(隐含 /O)。 /Y 禁止提示以确认改写一个 现存目标文件。 /-Y 导致提示以确认改写一个 现存目标文件。 /Z 用重新启动模式复制网络文件。 Xcopy 复制文件目录,包括子目录。 语法 xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:file1[+[file2]][+[file3]] [{/y|/-y}] [/z] 参数 Source 必需的。指定要复制的文件的位置名称。该参数必须包含驱动器或路径。 Destination 指定要复制的文件的目标。该参数可以包含驱动器盘符冒号、目录名、文件名或者它们的组合。 /w 在开始复制文件之前将显示以下消息并等待您的响应: Press any key to begin copying file(s) /p 提示您确认是否要创建每个目标文件。 /c 忽略错误。 /v 在写入目标文件时验证每个文件,以确保目标文件与源文件完全相同。 /q 禁止显示 xcopy 消息。 /f 复制时显示源文件目标文件名。 /l 显示要复制的文件列表。 /g 创建解密的目标文件。 /d[:mm-dd-yyyy] 只复制那些在指定日期或指定日期之后更改过的源文件。如果不包括 mm-dd-yyyy 值,xcopy 会复制比现有 Destination 文件新的所有 Source 文件。该命令行选项使您可以更新更改过的文件。 /u 只从 source 复制 destination 中已有的文件。 /i 如果 Source 是一个目录或包含通配符,而 Destination 不存在,xcopy 会假定 destination 指定目录名并创建一个新目录。然后,xcopy 会将所有指定文件复制到新目录中。默认情况下,xcopy 将提示您指定 destination 是文件还是目录。 /s 复制非空的目录子目录。如果省略 /s,xcopy 将在一个目录中工作。 /e 复制所有子目录,包括空目录。同时使用 /e、/s /t 命令行选项。 /t 只复制子目录结构(即目录树),不复制文件。要复制空目录,必须包含 /e 命令行选项。 /k 复制文件,如果源文件具有只读属姓,则在目标文件中保留该属姓。默认情况下,xcopy 会删除只读属姓。 /r 复制只读文件。 /h 复制具有隐藏系统文件属姓的文件。默认情况下,xcopy 不复制隐藏或系统文件。 /a 只复制那些具有存档文件属姓设置的源文件。/a 不修改源文件的存档文件属姓。有关如何通过使用 attrib 来设置存档文件属姓的信息,请参阅“”。 /m 复制具有存档文件属姓设置的源文件。与 /a 不同,/m 关闭在源中指定的文件的存档文件属姓。有关如何通过使用 attrib 来设置存档文件属姓的信息,请参阅“”。 /n 使用 NTFS 短文件或目录名创建副本。将文件或目录从 NTFS 卷复制到 FAT 卷或者当目标文件系统需要 FAT 文件系统命名约定(即 8.3 个字符)时,需要 /n。目标文件系统可以是 FAT 或 NTFS。 /o 复制文件所有权与自由选择的访问控制列表 (DACL) 信息。 /x 复制文件审核设置系统访问控制列表 (SACL) 信息(包含 /o)。 /exclude:filename1[+[filename2]][+[filename3]] 指定包含字符串的文件列表。 /y 禁止提示您确认要覆盖现存的目标文件。 /-y 提示您确认要覆盖现有目标文件。 /z 在可重启模式中通过网络复制。 /? 在命令提示符显示帮助。 注释 使用 /v XOX 使用 /exclude 列出每个文件的单独行中的每个字符串。如果列出的任何字符串与要复制的文件的绝对路径的任何部分匹配,就从复制进程排除该文件。例如,如果指定字符串 "\Obj\",则会排除 Obj 目录下的所有文件。如果指定字符串 ".obj",则排除具有 .obj 扩展名的所有文件。 使用 /z 如果在复制过程中丢失连接(例如,如果用于连接的服务器脱机),复制过程将在重新建立连接后恢复。/z 也显示每个文件完成的复制操作的百分比。 在 COPYCMD 环境变量中使用 /y 可在 COPYCMD 环境变量中使用 /y。在命令行上使用 /-y 可以覆盖该命令。默认情况下,会提示您覆盖,除非您从批处理脚本内运行 copy。 复制加密的文件 将加密文件复制到不支持 EFS 的卷会导致错误。应首先解密文件或将文件复制到支持 EFS 的卷中。 附属文件 要附加文件,请指定单个目标文件,多个源文件(使用通配符或文件 1 + 文件 2 + 文件 3 格式)。 Destination 的默认值 如果省略 Destination,xcopy 命令文件复制到当前目录。 指定 Destination 是文件还是目录 如果 Destination 不包含现有目录且不以反斜杠 (\) 结尾,会出现下列消息: Does destination specify a file name or directory name on the target (F = file, D = directory)? 如果要将一个或多个文件复制到一个文件,请按 F。如果要将一个或多个文件复制到一个目录,请按 D。 使用 /i 命令行选项可抑制显示该消息,从而导致 xcopy 认定在源是多个文件或一个目录的情况下,目标是一个目录。 使用 xcopy 命令设置 Destination 文件的存档属姓 xcopy 命令创建具有存档属姓设置的文件,无论源文件中是否设定了此属姓。有关文件属姓 attrib 的详细信息,请参阅“”。 比较 xcopy diskcopy 如果磁盘的子目录中包含文件,要将其复制到具有不同格式的磁盘中,请使用 xcopy 命令,而不要使用 diskcopy。因为 diskcopy 命令是一个磁道接一个磁道地复制磁盘,所以需要源磁盘目标磁盘的格式必须相同。xcopy 命令没有该要求。通常情况下请使用 xcopy,除非您需要完整的磁盘图像副本。 xcopy 的退出码 要处理 xcopy 返回的退出码,请在批处理程序的 if 命令行上使用 errorlevel 参数。有关使用“if”处理退出码的批处理程序的范例,请参阅“”。下表列出每一个退出码说明。 退出码 说明 0 文件复制没有错误。 1 没有找到要复制的文件。 2 用户按 CTRL+C 终止了 xcopy。 4 出现了初始化错误。没有足够的内存或磁盘空间,或命令行上输入了无效的驱动器名称或语法。 5 出现了磁盘写入错误。 范例 要从驱动器 A 将所有文件子目录(包括所有空的子目录)复制到驱动器 B,请键入: xcopy a:b:/s /e 要包含上一示例中的任何系统或隐藏文件,请按如下所示添加 /h 命令行选项: xcopy a:b:/s /e /h 要使用 \Rawdata 目录中 1993 年 12 月 29 日后更改的文件更新 \Reports 目录中的文件,请键入: xcopy \rawdata \reports /d:12-29-1993 要更新上例中 \Reports 中存在的所有文件,而不考虑日期,请键入: xcopy \rawdata \reports /u 如果只想获得前一个命令要复制的文件列表,而不复制文件,请键入: xcopy \rawdata \reports /d:12-29-1993 /l > xcopy.out 文件 Xcopy.out 列出了要复制的所有文件。 要将 \Customer 目录所有子目录复制到网络驱动器 H: 上的目录 \\Public\Address,保留只读属姓,并在 H: 上创建文件时对您做出提示,请键入: xcopy \customer h:\public\address /s /e /k /p 要发出上一个命令,确保在 \Address 目录不存在时 xcopy 会创建该目录,同时应抑制显示创建新目录时要显示的消息,请按如下所示添加 /i 命令行选项: xcopy \customer h:\public\address /s /e /k /p /i 可以创建批处理程序执行 xcopy 操作,并且使用 if 批处理命令在发生错误时处理退出码。例如,以下的批处理程序使用可替换的 xcopy 源目标参数: @echo off rem COPYIT.BAT transfers all files in all subdirectories of rem the source drive or directory (%1) to the destination rem drive or directory (%2) xcopy %1 %2 /s /e if errorlevel 4 goto lowmemory if errorlevel 2 goto abort if errorlevel 0 goto exit :lowmemory echo Insufficient memory to copy files or echo invalid drive or command-line syntax. goto exit :abort echo You pressed CTRL+C to end the copy operation. goto exit :exit 要使用该批处理程序将 C:\Prgmcode 目录其子目录中的所有文件复制到驱动器 B 中,请键入: copyit c:\prgmcode b: 该命令解释程序将用 C:\Prgmcode 替换 %1 与 B:。对于 %2,然后使用 xcopy 与 /e /s 命令行选项。如果 xcopy 遇到错误,批处理程序将读取退出码并转到相应 IF ERRORLEVEL 语句中指示的标签,然后显示相应的消息并退出批处理程序。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值