我正在写一个batch file,使用它的父目录中的一些文件(可以说Folder1)。
C:\User\Steve\Foder1\
现在我想让整个Folder_1可以重新定位,这样我就可以将文件夹粘贴到我/他人电脑上的任何地方并运行批处理脚本。
D:\User\Random_guy\Folder1\
问题是如何启动batch file的命令提示符(D:\ User \ Random_guy \ Folder1)它的父目录,而不写另一个批处理脚本来做到这一点。
开始你的批处理文件:
pushd %~dp0
这将把当前目录设置为包含批处理文件的文件夹。 然后在批处理文件中,确保所有路径都与当前目录相关。
但是,如果批处理文件在执行过程中更改为其他目录,并且仍然希望能够在不知道确切路径的情况下引用批处理文件夹的内容,请使用与文件路径相同的%~dp0
(s)你想使用。 例如,与批处理文件相同的文件夹中的FileA
将被定址为
"%~dp0FileA"
注意在FileA
之前没有\
。 这是因为%~dp0
已经包含了一个尾随%~dp0
,所以整个事情将会被评估为正确的路径。 (虽然如果你把另一个反斜杠,如"%~dp0\FileA"
,它应该也可以,因为Windows通常在路径中间忽略多个连续的反斜杠。)
批处理文件中的%CD%获取正在运行的当前目录/目录批处理。
所以 – 如果我有这个权利,你想运行
`C:\steve\folder1\yourbat.bat`
应该将C:\steve\somefiles
复制到D:\Random_guy
并将当前目录设置为D:\Random_guy\folder1
?
@ECHO OFF SETLOCAL SET subdir=folder1 SET destdir=%~1 IF NOT DEFINED destdir ECHO Require destination username&GOTO :EOF SET destdir=%~1\%subdir% :: Ensure destination exists ECHO MD "%destdir%" 2>nul SET "sourcefrom=%~dp0.." ECHO COPY "%sourcefrom%\filestocopy" "%destdir%\..\" ECHO CD /d "%destdir%"
请注意, MD
, COPY
和CD
命令只是ECHO
编辑,您需要删除ECHO
关键字来执行它们。
用参数D:\Random_guy
运行批处理