我正在寻找很长时间现在回答这个问题,从http://www.dostips.com/DtTutoPersistency.php和http://ss64.com/nt/for_cmd.html网站学到了很好的窍门,但仍然 - 没有解决我遇到的问题: 我有一个BATCH文件,其中我测试了特定文件夹(SendTo文件夹)的存在。如果我无法通过脚本找到它 - 我希望用户输入该文件夹的路径 - 并且将结果保留在BATCH文件中。如何通过文件本身更改BATCH文件中的变量值?
我缩小批处理文件(“有些file.bat”)看起来像:
@echo off
REM SomeNonsense
:: Win7/Vista
IF EXIST %APPDATA%\Microsoft\Windows\SendTo\NUL (
REM Do something
GOTO :EOF
)
:: WinXP
IF EXIST %USERPROFILE%\SendTo\NUL (
REM Do something
GOTO :EOF
)
:: Else
SET SendPath=
SET /P SendP="Please enter the path to the SendTo Folder:> "
IF EXIST %TMP%\SendPath.txt DEL %TMP%\SendPath.txt
FOR /F "usebackq TOKENS=* DELIMS=" %%A in ("%~0") DO (
ECHO %%A>>%TMP%\SendPath.txt
REM Later I want to change the value of SendPath with SendP,
REM And swap the file back to the original name
)
我的问题,现在是该文件的实际行被解释,我只想复制文本本身为临时文件(不使用COPY,因为我想逐行拷贝以改变SendPath值)。
另一件事是空行不被复制。
任何解决方案?
即使寿@ Aacini的回答更为直接 - 我仍然接受你,因为它是比较一般,并用的情况下交易,当你想超过一个持久的变量。谢谢你们两位,伙计们 –
在我的解决方案中,你可以存储_several_变量,并将它们放在几行连续的行中,用一个'call:defineVariables'行定义它们,然后通过'if defined thisVar ...' 。当然,你可以接受任何你想要的答案,但是给出的理由对我来说听起来很奇怪......(什么“更一般”意味着什么?) – Aacini
显然,你是对的 - 我**使用你的代码来检查几个变量成功,我的不好。 “更一般”我的意思是说这个解决方案并不是专门为我量身定做的,但是在一天结束时 - 简单的胜利 - 这意味着我使用了_your_代码,因此 - 我接受了你的答案。再次感谢。 –