懂批处理高手进!

来源:百度知道 编辑:UC知道 时间:2024/06/11 05:13:06
怎么用一个批处理来查找当前运行进程所在的目录。比如说我现在运行DNF.EXE这个程序了,怎么知道DNF.EXE在那个目录里运行的。多谢了。高手帮帮菜鸟我吧~~(我不是做坏事)。这个不知道在问个问题,用批处理查找注册表这个文件所在的文件夹后,怎么才能用批处理复制文件到这个查找到的文件夹里呢。比如说我在注册表找到DNF.EXE这个文件在某个文件夹里,可是我怎么用批处理复制文件到这个文件夹呢?(请高手指点一下吧)。我就剩34分了啊。

@ echo off
@ wmic process get executablepath | find "dnf.exe" > temp.txt
@ set/p targetPath= < temp.txt
@ del temp.txt
@ set targetPath=%targetPath:dnf.exe=%
@ copy %1 "%targetPath%" /y

第一行不用说,个人习惯。
第二行是先用wmic得到进程中所有程序的运行路径,再传到find命令中找出dnf.exe这行,保存到temp.txt里面。
第三行,将dnf.ex的运行路径设置为targetPath环境变量,因为我不会用管道来设置环境变量,只能借助中间临时文件。注意这时的路径,是带文件名的,类似“d:\DNF\dnf.exe”这样,要在后面把文件名去掉。
第四行,删除临时文件。
第五行,重新设置环境变量targetPath,将原来包含的文件名dnf.exe替换为空。
第六行,将目标文件拷贝进目标路径。

不太明白你说的,如果你要得到当前批处理所在的路径的话,用
"%~dp0"
就是了。

得到进程的路径的话
@echo off
set/p name=输入进程名称:
wmic process where name="%name%" get executablepath|find /i /v "exec"
pause

复制的话
copy 源路径 新路径 /y

wmic process get executablepath |find /i /v "exe"|wmic process get commandline
pause