@echo off
set "var=string"
set "today=%date:~10,4%-%date:~7,2%-%date:~4,2%"
set "path_backup=\SGSINWPDFS01vSGOTHERSITOTHERSWORKSTATIONSSCHEDULE"
set "path_sourcepst01=AppDataLocalMicrosoftOutlook"
set "path_sourcepst02=Desktop"
set "path_sourcepst03=My DocumentsPST"
set "path_sourcepst04=My DocumentsOutlook"
set "path_sourcepst05=My DocumentsOutlook 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上创建文件夹。SourcePST02工作正常。
看来我无法整个路径,系统混淆了,必须一一做。我在这里错过了什么吗?
添加行:
setlocal enableextensions
在批处理文件的@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 abcd
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.
在路径周围放了报价标记。
mkdir "%foo%%bar%%somename%"
问题是名称中有空格,而Mkdir将它们解释为两个参数,而不是一个名称。报价标记将迫使其将所有内容解释为单个路径。
约翰·德斯特斯(John Deters)已确定了这个问题 - 但我建议
set "path_sourcepst4=My DocumentsOutlook"
mkdir "%path_backup%%username%PST-%date:~10,4%-%date:~7,2%-%date:~4,2%%path_sourcepst4%"
使用set "var=string"
格式将确保设置为变量的值不会在线上包含任何流浪(很大程度上是无形的)尾随空间。您只需要被那个一次抓住...它还减少了" 的数量。
为什么不设置一个称为 yyyymmdd
的变量对 %date:~10,4%-%date:~7,2%-%date:~4,2%
,以便字符串未重复?
@echo off
set "var=string"
set "today=%date:~10,4%-%date:~7,2%-%date:~4,2%"
set "path_backup=\SGSINWPDFS01vSGOTHERSITOTHERSWORKSTATIONSSCHEDULE"
set "path_sourcepst01=AppDataLocalMicrosoftOutlook"
set "path_sourcepst02=Desktop"
set "path_sourcepst03=My DocumentsPST"
set "path_sourcepst04=My DocumentsOutlook"
set "path_sourcepst05=My DocumentsOutlook 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个字符是另一个限制。