从批处理文件所在的目录位置开始批处理文件命令提示符
问题描述:
我正在编写一个批处理文件,该文件使用其父目录中的某些文件(可以说是Folder1)。从批处理文件所在的目录位置开始批处理文件命令提示符
C:\User\Steve\Foder1\
现在我想使整个FOLDER_1重定位,这样我可以复制粘贴文件夹我的/别人的电脑上的任何地方和运行批处理脚本。
D:\User\Random_guy\Folder1\
的问题是,我该如何开始批处理文件中的命令提示符(d:\用户\ Random_guy \ Folder1中),它的父目录,而无需编写另一个批处理脚本来做到这一点。在批处理文件
答
与启动批处理文件:
pushd %~dp0
,将设置当前目录是文件夹包含批处理文件。然后在批处理文件中,确保所有路径都与当前目录相关。
但是,如果您的批处理文件在其执行过程中更改为其他目录,并且您仍然希望能够在不知道确切路径的情况下引用批处理的主文件夹的内容,请使用相同的%~dp0
作为您要使用的文件。例如,从同一个文件夹的批处理文件FileA
将作为
"%~dp0FileA"
注缺乏\
的FileA
之前加以解决。这是因为%~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
运行批次
感谢此工作。 – 2013-04-05 15:34:23