【发布时间】:2021-06-08 21:07:09
【问题描述】:
如何在批处理文件中回显(创建)另一个批处理文件以在 Windows 启动中运行并在运行后将其删除? [实际使用一个批处理脚本尝试 WSl 2 安装程序]
我试过了,
@echo off
:: BatchGotAdmin
// asking one time admin priv code here
@echo off
title wsl setup Part 1 !
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
// and here is my another batch to need echo correctly in C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\ for run after reboot
(echo @echo off^
:: BatchGotAdmin
// admin priv for seconf batch
@echo off
title wsl setup part 2 !
//other steps for download kernel and set default wsl version here
echo "Setup Finished, Deleting this bat" && del C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\wsl-part2.bat && pause
) > "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\wsl-part2.bat"
//First batch again for asking reboot now or later
:PROMPT
SET /P REBOOTNOW=Do you want reboot now second script will run after reboot (Y/[N])?
IF /I "%REBOOTNOW%" NEQ "N" GOTO END
shutdown -r
:END
endlocal
但我卡住了 dism 命令循环(因为 echo 不明白它是一个字符串)并且只回显到目标文件
@echo off:: BatchGotAdmin
Requesting administrative privileges...
【问题讨论】:
-
你为什么要在启动时运行一个批处理文件,它会尝试自我提升然后运行一个 msi、一个 wsl.exe 命令并安装一个发行版应用程序。所有这些都是单独的可执行文件,可以使用更有效的方法直接运行。
-
@Compo 因为我想要单个文件,它可以使用单个 admn priv 安装 wsl 单个 bat。它将像任何想要重新启动然后在重新启动后运行然后终止启动自己的启动脚本的安装程序。我可以使用 2 个单独的批处理文件来安装 wsl,然后升级 wsl 2 并运行我想要的任何发行版。单个文件比 2 个文件更酷:)
-
这不是一个文件,第一个批处理文件正在创建第二个 vbscript 文件,运行它然后删除它,然后编写可能创建第四个 vbscript 文件的第三个批处理文件运行它然后删除它,在最终删除自己之前。因此,您的“更酷”的一个文件至少是三个文件,可能是四个文件,只是变得不必要地复杂了。
标签: windows batch-file echo