【问题标题】:Create file inside folder without using cd to open folder在文件夹内创建文件而不使用 cd 打开文件夹
【发布时间】:2019-12-31 12:28:38
【问题描述】:

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

@echo off
set /p file= filename and extension: 
echo something_test >> %file%

但是,假设当前目录是这样的:

INSIDE (fo) main_folder: {
    (fi) script.bat
    (fo) somefolder
}

(fi = 文件和 fo = 文件夹;script.bat 是我正在制作的脚本)

如果我运行脚本并输入file.txt,将在(fi) script.bat 的主目录((fo) main_folder) 中创建(fi) file.txt。

现在假设我想在 (fo) somefolder 中创建它。

显而易见的事情是这样做:

@echo off
cd somefolder
set /p file= filename and extension: 
echo something_test >> %file%

然后;如果我运行脚本并输入file.txt,(fi)file.txt将在(fi)script.bat的WORKING目录((fo)somefolder)中创建。

但我想做的是,只需输入 set /p 命令,在 (fo) somefolder 中创建文件,而不使用 cd 命令。

以及如何在不使用cd.. 命令的情况下,仅通过输入set /p 命令,在(fo) main_folder 的主目录中创建文件?

【问题讨论】:

  • 使用@(Echo something_test)>>"%~dp0somefolder\%file%" 对我来说似乎太明显了,所以您可能没有向我们解释清楚。
  • 与最后一段的(echo something)>>"..\%file%" 一样明显。所以我也觉得解释不够。
  • @Compo 和 Stephan:这正是我的意思,但我愿意接受进一步的解释,就像 T3RR0R 所做的那样。
  • 那么你有没有试过我在评论中给你的那一行?如果是这样,发生了什么?你也可以使用%CD%@(Echo something_test)>>"%CD%\somefolder\%file%"%__CD__%@(Echo something_test)>>"%__CD__%somefolder\%file%" 来做同样的事情。

标签: file batch-file directory


【解决方案1】:

在您的主脚本中,在调用任何函数之前,使用:

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"

但是,我建议在可调用函数中使用选择来更改值,而不是使用 set /p。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多