Windows:如何将变量 - (输入:路径)保存到文本文件

Windows:如何将变量 - (输入:路径)保存到文本文件

我正在尝试将变量保存到文本文件,但失败了:

:folder
 echo. && echo Where is your folder ?
 set /p userinputpath = Type input[Drive][Path]:
 echo "%userinputpath%" >> folder.txt   
 IF EXIST "%userinputpath%" (goto checkexe) REM goto check .exe
 echo Incorrect input & goto folder

尝试保存userinputpath变量->输入如下所示:C:\Program Files (x86)\Subfolder\Subfolder

如果我将变量更改为字符串,它就可以正常工作。问题是什么?

答案1

我会在 中使用双引号,并通过使用with 运算符和for 来set /p检查输入是否为文件夹dir /a-a&&||goto :label A or B

如果存在,则可以在用户报告文件的情况下返回 True,以确保从文件夹传递输入。

对于echo\ input>...命令,您还可以使用“dobblequotes”来避免用户输入类似&|或其他内容时可能出现的任何潜在错误,即使是意外的,如果您需要一次保存一个,请将其替换>>>

观察:请参阅下面链接的条件执行!

echo\ variable >> == strings output will be append to file
echo\ variable >  == overwrite string output to file (replace all content)

:folder
echo; & echo;Where is your folder?
set /p "userinputpath=Type input[Drive][Path]: "

dir /b/a-a "%userinputpath%" >nul 2>nul && (
     echo;"%userinputpath%">"%temp%\folder.txt" & goto :checkexe
   ) || set /p "'=Incorrect input!"<nul & set "userinputpath="
     timeout -1 & echo; & goto :folder

:checkexe

但是,如果用户(总是这个人)只是输入,会发生什么enter/retunr?或者,突然选择使用变量作为输入文件夹?

  • %temp%,,,,等等...%windir%%userprofile%%appdata%

在这种假定的潜在情况下,在对您的代码进行最少更改的情况下,我将尝试:

@echo off

:folder
echo; & echo;Where is your folder?
set /p "userinputpath=Type input[Drive][Path]: " || goto :folder

<con: call dir/b/a-a "%userinputpath%\*" 2>nul >nul && (
      call echo;"%userinputpath%">"%temp%\folder.txt" & goto :checkexe
     ) || ( set /p "'=Incorrect input!"<nul && set "userinputpath=" <nul
      timeout -1 & goto :folder
     )

:checkexe

如果用户只点击enter/return命令set /p "userinputpath=Type input[Drive][Path]: ",则不会执行该命令,而是||在这种情况下,运算符后的命令将采取行动,因为set /p返回 non 0

并且,如果用户为路径/文件夹输入任何变量,例如% cd%\Folder_X%temp%\SubFolder_Y等等,则变量将被正确设置并%userinputpath%使用该call命令保存。

要将变量保存在文件中,请附加(>>)或覆盖(>),在检查输入是一个文件夹后再完成,从而保存输入中正确提供的变量:

First check if path/input is a folder:

<con: call dir/b/a-a "%userinputpath%\*" 2>nul >nul && (


After that, save this folder to your file:

      call echo;"%userinputpath%">"%temp%\folder.txt" & goto :checkexe

  • 进一步阅读:

[√]

[√]条件执行 || && ...

[√]为什么呼叫设置的工作方式不同

相关内容