我是批处理编程的新手。我的问题是我有两个变量,一个是路径,一个是新文件夹的名称,我想把它们合并起来,在这个结果路径中创建一个新文件夹。我尝试了很多方法,但都不起作用。请帮忙。
我尝试了以下代码:
@echo off
setlocal EnableDelayedExpansion
set ver=project
set spath=d:\a\svn\
set path=!%spath%%ver%!
mkdir %path%
pause
endlocal
我是批处理编程的新手。我的问题是我有两个变量,一个是路径,一个是新文件夹的名称,我想把它们合并起来,在这个结果路径中创建一个新文件夹。我尝试了很多方法,但都不起作用。请帮忙。
我尝试了以下代码:
@echo off
setlocal EnableDelayedExpansion
set ver=project
set spath=d:\a\svn\
set path=!%spath%%ver%!
mkdir %path%
pause
endlocal
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "ProjectVersion=project"
set "SvnPath=d:\a\svn\"
set "ProjectPath=%SvnPath%%ProjectVersion%"
mkdir "%ProjectPath%"
pause
endlocal
@echo off
set "ProjectVersion=project"
set "SvnPath=d:\a\svn\"
set "ProjectPath=%SvnPath%%ProjectVersion%"
mkdir "%ProjectPath%" 2>nul
if not exist "%ProjectPath%\" echo Failed to create directory "%ProjectPath%" & pause & goto :EOF
d:\a\svn
中有一个名为 project
的文件或在目录 d:\a
中有一个名为 svn
的文件),则会输出错误消息。接下来,附加反斜杠的目录路径将检查命令 MKDIR 执行后目录是否存在,并在目录仍然不存在时输出错误消息,使用 PAUSE 命令和退出批处理文件。
还需要阅读 Microsoft 关于 使用命令重定向运算符 的文章以解释 2>nul
和 使用 Windows 批处理文件的单行多个命令 的文章以解释 &
运算符。
为了理解所使用的命令及其工作原理,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读每个命令显示的所有帮助页面。
echo /?
endlocal /?
goto /?
if /?
mkdir /?
pause /?
set /?
setlocal /?
@echo off
setlocal EnableDelayedExpansion
set version=project
set spath=d:\a\svn\
set mypath=%spath%%version%
mkdir %mypath%
pause
endlocal
path
是一个保留名称 - 它定义了在当前目录中找不到可执行文件时搜索可执行文件的目录序列。如果更改它,那么简而言之,会导致悲惨的后果
ver
不是保留名称,但它是内置实用程序的名称,作为变量名选择很差。
您的代码试图将所需的新路径名设置为变量 d:\a\svn\project
的内容。由于这个变量非常不可能存在,您将尝试创建一个名为nothing的目录。
顺便说一句 - 没有必要设置 mypath
- md %spath%%ver%
同样有效。 MD
是 mkdir
的同义词,使用更广泛。