2015-09-17 41 views
0

我製作了一個需要管理員權限的程序,將自己複製到另一個文件夾。這是我加入這個原因(我發現它計算器),以我的程序的開頭:將程序拷貝到該文件夾​​您可以刪除批處理文件/ cmd程序中的特定行嗎?

@echo off 

:: BatchGotAdmin 
:------------------------------------- 
REM --> Check for permissions 
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 

REM --> If error flag set, we do not have admin. 
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges... 
    goto UACPrompt 
) else (goto gotAdmin) 

:UACPrompt 
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
    set params = %*:"="" 
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" 

    "%temp%\getadmin.vbs" 
    del "%temp%\getadmin.vbs" 
    exit /B 

:gotAdmin 
    pushd "%CD%" 
    CD /D "%~dp0" 
:-------------------------------------- 

但是我不希望這樣的代碼了,因爲它不是需要,它仍然會彈出窗口。 我的問題是:這種代碼可以以某種方式刪除一次使用該程序後? 所有代碼必須在同一個批處理文件中完成。

謝謝!

+0

你想刪除自己的批處理嗎?在行退出/ B之前嘗試'del thebatchfile.bat' – Paul

回答

0

而是將文件複製到新的目錄,並刪除部分代碼之後,這個怎麼樣的:

啓動您的批處理文件,檢查管理,如果成功「寫」的內容到目標目錄簡單跳過你想刪除的行。

事情是這樣的:

@echo off 
SET targetfile=C:\new\folder\targetfile.bat  

:: BatchGotAdmin 
REM your admin code here 
:-------------------------------------- 

ECHO 1st line of your code>%targetfile% 
ECHO 2nd line of your code>>%targetfile% 
ECHO 3rd line of your code>>%targetfile% 
REM ... your code ... 
ECHO last line of your code>>%targetfile% 

這樣你就「創造」的目標位置的文件。

另一個選擇是使用FOR /F循環遍歷文件,逐行將其複製到臨時文件中,跳過「管理檢查」部分,刪除原始文件並將新文件重命名爲舊名稱。這也是可能的,但它確實很難看。如果你喜歡這個解決方案,告訴我,我會張貼一些代碼。但要小心!你不會喜歡它! :D

相關問題