這是我目前做的,檔案1:
powershell.exe -command "Start-Process cmd -ArgumentList '/c cd C: & & DiskZero.cmd'-Verb runas"
而檔案2 "DiskZero.cmd":
@echo off
(echo重新掃描
echo sel disk 1
echo cle all
echo cre part prim
echo for fs=ntfs quick label=Intenso
echo assign letter=E
) | diskpart
暫停
它按計劃作業,然而,有兩個檔案,我想做的是使它只有一個檔案。
我無法找到如何用一個腳本將多行代碼輸入到一個新的高架命令提示符中,所以我試圖用 powershell 來做這件事:
然而, 我希望在Powershell中這樣做: 誰能幫我解決 uj5u.com熱心網友回復: 誰能幫我解決啟動 不幸的是,沒有任何解決方案。Windows從根本上不允許你直接在一個non-elevated行程的控制臺視窗中運行一個elevated行程(以管理員身份運行,要求使用 或者將多行代碼輸入到一個新的高架命令提示符中,只有一個檔案,請問?start cmd
start cmd -nonewwindow可以使用start cmd -nonewwindow。
start cmd -ver runas worksstart cmd -nonewwindow -ver runas并不作業start cmd -nonewwindow -ver runas
@echo off
(echo重新掃描
echo sel disk 1
echo cle all
echo cre part prim
echo for fs=ntfs quick label=Intenso
echo assign letter=E
) | diskpart
暫停
start cmd -nonewwindow -ver runas的問題OR將多行代碼輸入到一個新的高架命令提示符中,只有一個檔案,請問?
cmd -nonewwindow -verb runas問題-Verb RunAs) - 這就是為什么Start-Process 系統地防止將-NoNewWindow與-Verb RunAs相結合。
雖然有一個解決方案,但它將是難以維護的:
你可以將第二個批處理檔案的行數(你想洗掉的那個)傳到cmd /c的單行上,用&:
- 注意:為了便于進行無副作用的實驗,原來的
diskpart命令被替換為findstr -n .,它只是列印通過stdin收到的行,前面加上行號。
powershell. exe -command "Start-Process -Verb RunAs cmd '/c cd C: & & (echo rescan& echo sel disk 1& echo cle all& echo cre part prim& echo for fs=ntfs quick label=Intenso& echo assign letter=E) | findstr -n .&pause'"
在每個&之前沒有空格符是故意的,因為在echo命令中的尾部空白是重要的,也就是說,它成為輸出的一部分;然而,在a之后放置一個空格符應該是可以的。在每個&之后(以及之前,如果前面的命令忽略了尾部的空白)。
@echo off
:: 確定臨時批處理檔案的路徑...
:: Note: %~snx0使用短(8.3)名稱的批處理檔案,所以如
:: to確保temp. 檔案的路徑沒有空格,這
免除了以后復雜的雙引號的需要。
設定"tmpBatchFile=%TEMP%~%~snx0"。
:: ... and fill it with the desired commands.
:: 注意元字符 - ( ) | ... - 必須使用^-escaped。
(
echo @echo off
echo ^(echo rescan
echo echo sel disk 1.
echo echo cle all
echo echo cre part prim
echo echo for fs=ntfs quick label=Intenso
echo echo assign letter=E
echo ^) ^| findstr -n .
echo pause
) > "%tmpBatchFile%"。
:: 現在你可以讓PowerShell啟動的高架cmd.exe行程
:: 執行臨時批處理檔案。
:: Note: -Wait確保PowerShell呼叫阻塞直到升高的
:: cmd.exe視窗關閉。
powershell.exe -command "Start-Process -Wait -Verb RunAs cmd '/c cd C: & %tmpBatchFile%'"
:: 洗掉臨時批處理檔案。
:: Note。如果你做NOT 使用 -Wait上面。你會有要推遲洗掉
:: 批處理檔案 直到 在升高的cmd.exe視窗關閉之后。
:: 你'll必須手動進行。
del "%tmpBatchFile%"。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326685.html
標籤:
