Batch file 使用变量更改目录

Batch file 使用变量更改目录,batch-file,Batch File,我不熟悉编写批处理文件。我想创建一个批处理文件,允许我使用变量更改2个目录。下面是我到目前为止所拥有的。有什么想法吗 @echo off S: cd AAA set /p CLIENTCODE=CLIENTCODE? cd %CLIENTCODE% pause set /p SCHEMANAME=SCHEMANAME? cd %SCHEMANAME% pause 请尝试以下批处理代码: @echo off setlocal set "ClientCode=AAA" set "SchemaNam

我不熟悉编写批处理文件。我想创建一个批处理文件,允许我使用变量更改2个目录。下面是我到目前为止所拥有的。有什么想法吗

@echo off
S:
cd AAA
set /p CLIENTCODE=CLIENTCODE?
cd %CLIENTCODE%
pause
set /p SCHEMANAME=SCHEMANAME?
cd %SCHEMANAME%
pause

请尝试以下批处理代码:

@echo off
setlocal
set "ClientCode=AAA"
set "SchemaName=5H"
:UserPrompt
cls
set /P "ClientCode=Enter client code (default: %ClientCode%): "
set /P "SchemaName=Enter schema name (default: %SchemaName%): "
if not exist "S:\%ClientCode%\%ClientCode%%SchemaName%" goto InputError
cd /D "S:\%ClientCode%\%ClientCode%%SchemaName%"
endlocal
goto :EOF

:InputError
echo.
echo Client code "%ClientCode%" or schema name "%SchemaName%" is not valid.
set "InputAgain=Y"
set /P "InputAgain=Enter data again (Y/N)? "
if /I "%InputAgain%" == "Y" goto UserPrompt
if /I "%InputAgain%" == "YES" goto UserPrompt
endlocal
这个批处理文件首先定义了客户机代码和模式名称的默认值,使得用户可以在默认值正常时简单地点击回车键或回车键

接下来,清除窗口,并提示用户输入客户机代码和架构名称。用户的输入根本没有经过验证

如果存在适当的目录(或文件),则进行非常简单的检查

如果存在符合输入数据的目录,则会更改当前目录

如果目录不存在,则会询问用户是否应在键入错误时重复数据输入。用户可以在任何情况下输入
Y
YES
,以重做数据输入。否则,批处理脚本将退出而不更改目录

在验证用户输入字符串和验证输入的字符串是否真的指向目录而不是文件方面没有做任何实际工作

要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面

  • cls/?
  • echo/?
  • endlocal/?
  • goto/?
  • 如果/?
  • 设置/?
  • setlocal/?

尝试以下批次代码:

@echo off
setlocal
set "ClientCode=AAA"
set "SchemaName=5H"
:UserPrompt
cls
set /P "ClientCode=Enter client code (default: %ClientCode%): "
set /P "SchemaName=Enter schema name (default: %SchemaName%): "
if not exist "S:\%ClientCode%\%ClientCode%%SchemaName%" goto InputError
cd /D "S:\%ClientCode%\%ClientCode%%SchemaName%"
endlocal
goto :EOF

:InputError
echo.
echo Client code "%ClientCode%" or schema name "%SchemaName%" is not valid.
set "InputAgain=Y"
set /P "InputAgain=Enter data again (Y/N)? "
if /I "%InputAgain%" == "Y" goto UserPrompt
if /I "%InputAgain%" == "YES" goto UserPrompt
endlocal
这个批处理文件首先定义了客户机代码和模式名称的默认值,使得用户可以在默认值正常时简单地点击回车键或回车键

接下来,清除窗口,并提示用户输入客户机代码和架构名称。用户的输入根本没有经过验证

如果存在适当的目录(或文件),则进行非常简单的检查

如果存在符合输入数据的目录,则会更改当前目录

如果目录不存在,则会询问用户是否应在键入错误时重复数据输入。用户可以在任何情况下输入
Y
YES
,以重做数据输入。否则,批处理脚本将退出而不更改目录

在验证用户输入字符串和验证输入的字符串是否真的指向目录而不是文件方面没有做任何实际工作

要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面

  • cls/?
  • echo/?
  • endlocal/?
  • goto/?
  • 如果/?
  • 设置/?
  • setlocal/?

在右上角的搜索框中键入:批量更改方向代码看起来正常。那么到底是什么问题呢?如果出于某种原因,您觉得您的代码不起作用,我会首先确保用户提供的
%CLIENTCODE%
目录实际上位于
AAA
目录内,而且
%SCHEMANAME%
目录实际上在
%CLIENTCODE%
目录中,因为这是您告诉代码查找这些目录的地方。只包含
s:
的行将当前目录更改为驱动器
s:
上最后使用的目录。这可以是驱动器
S:
的根目录,也可以是该驱动器上任何其他目录的根目录。将
S:
cdaaa
两行替换为
cd/D“S:\AAA”
,这将当前目录明确更改为
S:\AAA
。在命令提示窗口中运行
cd/?
,了解有关参数
/D
.Mofi的详细信息,我希望AAA作为用户输入的客户端代码,然后下一个提示是schemaname,它由以下条目5H组成。因此,我希望批处理程序从S开始:然后在条目CD之后到AAA,然后一旦用户输入5H,然后使用AAA和5H(AAA5H)的组合进入另一个级别…希望在右上角的搜索框中有意义键入:批量更改方向代码看起来没问题。那么到底是什么问题呢?如果出于某种原因,您觉得您的代码不起作用,我会首先确保用户提供的
%CLIENTCODE%
目录实际上位于
AAA
目录内,而且
%SCHEMANAME%
目录实际上在
%CLIENTCODE%
目录中,因为这是您告诉代码查找这些目录的地方。只包含
s:
的行将当前目录更改为驱动器
s:
上最后使用的目录。这可以是驱动器
S:
的根目录,也可以是该驱动器上任何其他目录的根目录。将
S:
cdaaa
两行替换为
cd/D“S:\AAA”
,这将当前目录明确更改为
S:\AAA
。在命令提示窗口中运行
cd/?
,了解有关参数
/D
.Mofi的详细信息,我希望AAA作为用户输入的客户端代码,然后下一个提示是schemaname,它由以下条目5H组成。因此,我希望批处理程序从S开始:然后在条目CD之后到AAA,然后一旦用户输入5H,然后使用AAA和5H(AAA5H)的组合进入另一个级别…希望这是有道理的