在单个命令中的Windows多路径中的mkdir

m.k*_*nky 8 windows command-line mkdir

@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%"
Run Code Online (Sandbox Code Playgroud)

我按照上面的说法修改了脚本.我仍然无法在sourcepst01,03,04和05处创建文件夹.sourcepst02工作正常.

看来我不能MKDIR整个路径,系统混淆,必须逐一做.我在这里错过了什么吗?

Mic*_*urr 9

添加行:

setlocal enableextensions
Run Code Online (Sandbox Code Playgroud)

就在@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.
Run Code Online (Sandbox Code Playgroud)


Joh*_*ers 7

在路径周围加上引号.

mkdir "%foo%\%bar%\%somename%"
Run Code Online (Sandbox Code Playgroud)

问题是名称中有空格,而mkdir将它们解释为两个参数而不是单个名称.引号将强制它将所有内容解释为单个路径.

  • 是的,它确实.如果它不适合您,请澄清您收到的错误消息, (5认同)