标题: [系统相关] 批处理文件所在路径,已经添至系统变量PATH中,但运行时%CD%却不是该路径? [打印本页]
作者: mebanna 时间: 2014-3-19 13:20 标题: 批处理文件所在路径,已经添至系统变量PATH中,但运行时%CD%却不是该路径?
OS:Win7
自己写了些批处理文件,集中保存在下面路径:复制代码
然后手动添加该路径到系统变量中了——我的电脑-属性-高级-变量-Path。
现在通过快捷键Ctrl-R调出“运行”对话框,输入我的批处理文件名,能够成功启动这些批处理。
但问题是,这些批处理运行过程中,显示当前运行目录为:复制代码
请问:当前运行目录,为何不是这些批处理所在目录呢?
作者: apang 时间: 2014-3-19 14:00
"当前工作目录" 和 "批处理文件所在目录" 不是相同的
"当前工作目录" 是可以改变的,比如右键以管理员权限运行后,%cd%变成%windir%\system32
再比如在 "运行" 中输入批处理文件名,%cd%为默认的 %userprofile%
要显示批处理文件所在目录,用 %~dp0 就好
作者: DAIC 时间: 2014-3-19 14:19
把你的批处理代码发出来看看
作者: mebanna 时间: 2014-3-19 15:03
本帖最后由 mebanna 于 2014-3-19 15:11 编辑
感谢回复!
回复 3# DAIC
我写了个测试文件,问题依旧。- @ECHO OFF
- ECHO %CD%
-
- ECHO %~dp0
- PAUSE
复制代码
运行后,显示当前运行目录(%CD%)为“C:\Users\Administrator”,而不是我希望的“E:\MyBatch”。
变量“%~dp0”,倒是显示为“E:\MyBatch”。可我需要的是【当前运行目录】为该值啊。
回复 2# apang
怎样才能实现——从运行栏中启动批处理时,当前运行路径,为该批处理文件所在路径呢?
作者: apang 时间: 2014-3-19 15:17
回复 4# mebanna - @ECHO OFF
- pushd "%~dp0"
- ECHO %CD%
- ECHO %~dp0
- PAUSE
复制代码
作者: mebanna 时间: 2014-3-30 19:03
回复 5# apang
感谢回复!
其实我并不是为了显示“批处理文件所在路径”。
而是我的批处理文件中很多指令,都是用【相对路径】编写的——即,假定【工作目录】为【批处理文件所在目录】。
像现在这样工作目录不等于批处理所在目录,就会导致批处理指令中所有设计【相对路径】的指令失效。
请问有什么办法,能让批处理的【工作目录】与【批处理文件所在目录】相一致吗?
作者: apang 时间: 2014-3-30 20:35
回复 6# mebanna
1.已经告诉你了,“当前工作目录”和“批处理文件所在目录”两码事,鸡是鸡,鸭是鸭,你非要让鸡下鸭蛋,鸡妈妈不愿意,鸭爸爸也不会干
2.#5代码只是提示你,通过cd /d 或 pushd 可以切换工作目录到批处理文件所在目录。切换过去后,dir *.txt 或 type a.txt 就是相对于批处理文件所在目录了
作者: mebanna 时间: 2014-4-2 13:48
回复 7# apang
唉,我是想有没有什么手动设置一下windows系统参数的办法,能让工作目录和批处理所在目录关联起来。这样我就不用去手动逐个修改批处理文件了。因为有好多批处理文件呃..
非常感谢!
作者: 753239196 时间: 2014-5-24 08:00
在设置里面有个PATH环境变量设置, 不知道你说是否是这个?
作者: czjt1234 时间: 2014-5-24 08:36
本帖最后由 czjt1234 于 2014-5-24 08:49 编辑
导入以下注册表- Windows Registry Editor Version 5.00
-
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
- "AutoRun"="cd /d E:\\MyBatch"
复制代码
测试发现不行,每条指令前都执行。
要么你运行
start /d E:\MyBatch xxx.bat
要么你在桌面上新建一个批处理- @echo off
- start /d E:\MyBatch cmd /k
复制代码
以后要运行批处理,就双击这个批处理,不要在"运行"里了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |