我正在创建一个脚本,用于在当前目录中创建一个文件。
@echo off
set /p file= filename and extension:
echo something_test >> %file%
但是,假设当前目录是这样的:
INSIDE (fo) main_folder: {
(fi) script.bat
(fo) somefolder
}
(fi = 文件,fo = 文件夹;脚本.bat是我正在制作的脚本(
如果我运行脚本并输入file.txt
, (fi( 文件.txt将在 (fi( script.bat 的主目录 ((fo( main_folder( 中创建。
现在假设我想在 (fo( 某个文件夹中创建它。
显而易见的事情是这样做:
@echo off
cd somefolder
set /p file= filename and extension:
echo something_test >> %file%
然后;如果我运行脚本和输入文件.txt,(fi(文件.txt将在(fi(脚本.bat的工作目录((fo(somefolder(中创建(。
但是我想做的是,只需输入 set/p 命令,即可在 (fo( somefolder 中创建文件,而无需使用 cd 命令。
以及如何仅通过输入 set/p 命令,在 (fo( main_folder 的主目录中创建文件,而无需使用cd..
命令?
在主脚本中,在调用任何函数之前,请使用:
Set "Prog_Dir=%~dp0"
REM %~dp0 Expands to the directory which the Batch is run in - The folder it's in.
Set "somefolder=%Prog_Dir%somefolder"
要在脚本目录中创建文件:
(
ECHO Your text
) >"%Prog_Dir%filename.ext"
要在脚本子目录中创建文件:
(
ECHO Your text
) >"%somefolder%filename.ext"
这种使用相对路径的方法可确保脚本按预期运行,而不管脚本文件夹位于何处。
要使用 set/p 调整目录,请使用它来测试值。 例如:
Set p StoreLocation=[1: MainDirectory 2:SomeFolder]
IF %StoreLocation%==1 Set "SaveLoc=%Prog_Dir%"
IF %StoreLocation%==2 Set "SaveLoc=%somefolder%"
并将您的商店方法更改为:
(
ECHO Your text
) >"%SaveLoc%filename.ext"
但是,我建议在可调用函数中使用 choice 来更改值,而不是使用 set/p。