在文件夹内创建文件,而无需使用 cd 打开文件夹



我正在创建一个脚本,用于在当前目录中创建一个文件。

@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。

最新更新