标题: [系统相关] [已解决]求教批处理命令cd如何跳转到变量里面放的路径? [打印本页]
作者: shazi0000 时间: 2013-1-5 16:37 标题: [已解决]求教批处理命令cd如何跳转到变量里面放的路径?
本帖最后由 shazi0000 于 2013-1-6 10:17 编辑
现在,我有个变量里面放的是路径,现在我想跳转到这个路径该怎么做
本来我写的代码如下:- @echo off
- set path=C:\Program Files\Google\bin
- cd /d %path%
- pause>nul
复制代码
这样写是无法通过的,所以求教各位大神
顺便问下如上的路径该怎么拼接
拼接结果例如:C:\Program Files\Google\aaa
C:\Program Files\Google\bbb
C:\Program Files\Google\ccc
作者: BAT-VBS 时间: 2013-1-5 17:22
- @echo off
- set "mypath=C:\Program Files\Google\bin"
- cd /d "%mypath%"
- pause
复制代码
作者: QIAOXINGXING 时间: 2013-1-6 02:23
拼接??- @echo off&SetLocal EnableDelayEdexpansion&cd /d "%~dp0"
- set "mpath=C:\Program Files\Google"
- for %%a in (aaa bbb ccc) do (
- echo "!mpath!\%%a"
- )
- pause
复制代码
作者: yu2n 时间: 2013-1-6 09:50
拼接??
QIAOXINGXING 发表于 2013-1-6 02:23
拼接与跳转至目录?- @echo off
-
- REM 开启变量延迟
- SetLocal EnableDelayEdexpansion
-
- REM 跳转到本脚本目录
- cd /d "%~dp0"
-
- REM 设置变量
- set "mpath=C:\Program Files\Google"
-
- REM 截取字符
- for %%a in (aaa bbb ccc) do (
-
- REM 显示字符
- echo "!mpath!\%%a"
-
- REM 路径是否为目录
- pushd "!mpath!\%%a" >nul 2>nul
- if !ERRORLEVEL! EQU 0 (
-
- REM 进入目录操作
- pushd "!mpath!\%%a"
-
- REM 显示该目录下所有文件
- dir /a /b
-
- REM 跳出该目录,转至上个目录
- popd
-
- ) else (
-
- echo 不存在 "!mpath!\%%a" 目录
-
- )
-
- )
-
- REM 暂停
- pause
复制代码
作者: shazi0000 时间: 2013-1-6 09:54
谢谢 问题解决
还想问下,为什么加引号,有特殊字符?那是不是有特殊字符的就一定要加上引号?
作者: shazi0000 时间: 2013-1-6 09:58
谢谢 问题解决
还想问下,为什么加引号,有特殊字符?那是不是有特殊字符的就一定要加上引号?
作者: BAT-VBS 时间: 2013-1-6 10:01
回复 6# shazi0000
是。
有空格。
问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。
作者: shazi0000 时间: 2013-1-6 10:08
谢谢 问题解决
还想问下,为什么加引号,有特殊字符?那是不是有特殊字符的就一定要加上引号?
作者: shazi0000 时间: 2013-1-6 10:23
回复 7# BAT-VBS
你好
谢谢你回答我的问题
我还想问下
类似:set "path=C:\Program Files\Google\bin"这样中间有空格的变量怎么传递,如果直接call :start %path%这样写,在子过程中调用会出错,子过程会以空格啦截取变量
求解怎么办?
作者: BAT-VBS 时间: 2013-1-6 10:24
回复 9# shazi0000 复制代码
不要用%path%作为自定义变量
作者: shazi0000 时间: 2013-1-6 10:36
回复 10# BAT-VBS
可能你理解错了,你说不要用%path%应该是会和系统环境变量冲突吧。
我的意思是,在子过程调用带有空格的变量参数的时候,变量会被以空格截断
例如:
@echo off
set "myPath1=C:\Program Files\Google Files\bin1"
set "myPath2=C:\Program Files\Google Files\bin2"
call :start %myPath2% %myPath2%
pause
:start
set myPath1=%1
set myPath2=%2
echo %myPath1%
echo %myPath2%
goto :eof
结果的话显示是:
C:\Program
Files\Google
作者: BAT-VBS 时间: 2013-1-6 10:38
回复 11# shazi0000
可能是你没看到10楼的代码里面有双引号?
作者: shazi0000 时间: 2013-1-6 10:44
回复 12# BAT-VBS
抱歉 眼拙 眼拙
谢谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |