标题: [文件操作] 批处理无法移动自身所在文件夹到根目录例如c:\ [打印本页]
作者: jellyhk 时间: 2011-12-22 11:01 标题: 批处理无法移动自身所在文件夹到根目录例如c:\
本帖最后由 pcl_test 于 2016-11-17 12:23 编辑
move %cd% c:\
出现问题说另一个程序正在使用此文件,进程无法访问!那我就想啊! 我写另一个批处理!用另一个批处理关闭现在的文件夹和当前批处理!那不就没使用了么?不过不知道为什么还是正在使用!- set a=%cd%
- for /f "tokens=2" %%a in ('tasklist^|find "notepad.exe"') do set b=%%a
-
- echo taskkill /f /im explorer.exe >c:\1.bat
- echo taskkill /f /pid %%b%% >>c:\1.bat
- echo ping 127.1 -n 3 >>c:\1.bat
- echo move "%%a%%" c:\ >>c:\1.bat
- echo ping 127.1 -n 3 >>c:\1.bat
- echo explorer.exe >>c:\1.bat
- echo pause >>c:\1.bat
- c:\1.bat
复制代码
作者: powerbat 时间: 2011-12-22 12:03
将cmd当前工作目录切换出去就行了。- set "pwd=%cd%"
- cd\
- move "%pwd%"
复制代码
作者: CrLf 时间: 2011-12-22 12:50
回复 2# powerbat
简洁一点,set pwd="%cd%",以后省一对引号...
作者: powerbat 时间: 2011-12-22 17:33
回复 3# CrLf
这种风格不好。路径本身与引号不应该形成耦合。
另外,如果后面还要添加路径如“Program Files”,变得麻烦。
作者: CrLf 时间: 2011-12-22 18:34
回复 4# powerbat
不明白为何不好?我倒觉得这样更不容易发生漏加引号的错误,而且路径可以直接附加在已经被引号括起来的路径前后,一般是没有问题的。
作者: powerbat 时间: 2011-12-22 20:13
回复 5# CrLf
看看《高质量C++/C编程指南》,你就会明白的。
eg:
set pwd="C:\Program Files"
set exe="%pwd:"=%\Mozilla Firefox\firefox.exe"
岂不是更麻烦?
(虽然也可以直接set exe=%pwd%\"Mozilla Firefox\firefox.exe",但这样可能产生更多问题,比如会导致%~1脱引号不正确)
在vbs中更明显,如果设置strFile="""C:\Program Files\Mozilla Firefox\firefox.exe""",虽然run方法没问题,但f在so中会出错。
引号的使用应该由程序员自己把握,它不属于路径的一部分,不要犯“多做之过”
作者: powerbat 时间: 2011-12-22 20:18
嗯,“多做之过”好像是《C专家编程》中讲到的。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |