[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理无法移动自身所在文件夹到根目录例如c:\

本帖最后由 pcl_test 于 2016-11-17 12:23 编辑

move %cd% c:\
出现问题说另一个程序正在使用此文件,进程无法访问!那我就想啊! 我写另一个批处理!用另一个批处理关闭现在的文件夹和当前批处理!那不就没使用了么?不过不知道为什么还是正在使用!
  1. set a=%cd%
  2. for /f "tokens=2" %%a in ('tasklist^|find "notepad.exe"') do set b=%%a
  3. echo taskkill /f /im explorer.exe >c:\1.bat
  4. echo taskkill /f /pid %%b%% >>c:\1.bat
  5. echo ping 127.1 -n 3 >>c:\1.bat
  6. echo move "%%a%%" c:\ >>c:\1.bat
  7. echo ping 127.1 -n 3 >>c:\1.bat
  8. echo explorer.exe >>c:\1.bat
  9. echo pause >>c:\1.bat
  10. c:\1.bat
复制代码
本人已死!不用联系!~
要联系下来联系!~~

将cmd当前工作目录切换出去就行了。
  1. set "pwd=%cd%"
  2. cd\
  3. move "%pwd%"
复制代码

TOP

回复 2# powerbat


    简洁一点,set pwd="%cd%",以后省一对引号...

TOP

回复 3# CrLf


这种风格不好。路径本身与引号不应该形成耦合。
另外,如果后面还要添加路径如“Program Files”,变得麻烦。

TOP

回复 4# powerbat


    不明白为何不好?我倒觉得这样更不容易发生漏加引号的错误,而且路径可以直接附加在已经被引号括起来的路径前后,一般是没有问题的。

TOP

回复 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中会出错。
引号的使用应该由程序员自己把握,它不属于路径的一部分,不要犯“多做之过”

TOP

嗯,“多做之过”好像是《C专家编程》中讲到的。

TOP

返回列表