@echo off set "var=string" set "today=%date:~10,4%-%date:~7,2%-%date:~4,2%" set "path_backup=\\SGSINWPDFS01v\SG\OTHERS\IT\OTHERS\WORKSTATIONS\SCHEDULE" set "path_sourcepst01=AppData\Local\Microsoft\Outlook" set "path_sourcepst02=Desktop" set "path_sourcepst03=My Documents\PST" set "path_sourcepst04=My Documents\Outlook" set "path_sourcepst05=My Documents\Outlook Files" mkdir "%path_backup%\%username%\%today%" mkdir "%path_backup%\%username%\%today%\PST" mkdir "%path_backup%\%username%\%today%\PST\%path_sourcepst01%" mkdir "%path_backup%\%username%\%today%\PST\%path_sourcepst02%" mkdir "%path_backup%\%username%\%today%\PST\%path_sourcepst03%" mkdir "%path_backup%\%username%\%today%\PST\%path_sourcepst04%" mkdir "%path_backup%\%username%\%today%\PST\%path_sourcepst05%"
我修改了上面的脚本。 我仍然无法在sourcepst01,03,04和05创build文件夹。sourcepst02工作正常。
看来我不能MKDIR整个path,系统混乱,一定要做一个一个的。 我在这里错过了什么?
在路径周围放置引号。
mkdir "%foo%\%bar%\%somename%"
问题在于名称中有空格,而mkdir正在将它们解释为两个参数而不是单个名称。 引号将迫使它把所有东西都解释为单一的路径。
约翰·德斯(John Deters)已经解决了这个问题 – 但我建议
set "path_sourcepst4=My Documents\Outlook" mkdir "%path_backup%\%username%\PST-%date:~10,4%-%date:~7,2%-%date:~4,2%\%path_sourcepst4%"
使用set "var=string"
格式将确保在变量中设置的值不包括行中的任何杂散(并且大部分不可见)尾随空格。 你只需要被那个人抓住一次……这也减少了“解决问题”的数量。
为什么不设置一个名为say yyyymmdd
的变量为%date:~10,4%-%date:~7,2%-%date:~4,2%
这样这个字符串不会被重复?
添加行:
setlocal enableextensions
@echo off
在批处理文件的@echo off
行之后。 这将使mkdir
创建任何中间目录。
help mkdir
输出摘录:
If Command Extensions are enabled MKDIR changes as follows: MKDIR creates any intermediate directories in the path, if needed. For example, assume \a does not exist then: mkdir \a\b\c\d is the same as: mkdir \a chdir \a mkdir b chdir b mkdir c chdir c mkdir d which is what you would have to type if extensions were disabled.
@echo off set "var=string" set "today=%date:~10,4%-%date:~7,2%-%date:~4,2%" set "path_backup=\\SGSINWPDFS01v\SG\OTHERS\IT\OTHERS\WORKSTATIONS\SCHEDULE" set "path_sourcepst01=AppData\Local\Microsoft\Outlook" set "path_sourcepst02=Desktop" set "path_sourcepst03=My Documents\PST" set "path_sourcepst04=My Documents\Outlook" set "path_sourcepst05=My Documents\Outlook Files" subst b: "%path_backup%" mkdir "%path_backup%\%username%\%today%" mkdir "%path_backup%\%username%\%today%\PST" mkdir "%path_backup%\%username%\%today%\PST\%path_sourcepst01%" mkdir "%path_backup%\%username%\%today%\PST\%path_sourcepst02%" mkdir "%path_backup%\%username%\%today%\PST\%path_sourcepst03%" mkdir "%path_backup%\%username%\%today%\PST\%path_sourcepst04%" mkdir "%path_backup%\%username%\%today%\PST\%path_sourcepst05%" subst b: /D
我发现这个问题,似乎网络驱动器不能创建多个级别的子文件夹。 所以映射到本地驱动器解决问题。
问题可能是由于文件夹深度的嵌套级别。
我相信8级目录是支持的最大值,总共260个字符是另一个限制。