Batch批量替換hosts

hosts文件替換

工做須要,要修改不少計算機的hosts文件,採用bat批量完成
解決的問題:
1.pc工做在非管理員權限,右鍵管理員權限太麻煩,所以採用執行中申請管理員權限的方式
2.hosts和替換腳本放在某臺pc機上,其餘pc以共享文件夾的方式訪問,但cmd命令行沒法將UNC路徑做爲當前目錄,這樣就不方便識別和腳本同目錄的hosts文件.
3.執行備份替換前,要先新版hosts文件是否和Batch文件在同一目錄,防止錯誤操做.
4.無論文件是否完成更新,都須要給出提示,而且自動關閉終端.
對於問題1,參考 https://blog.csdn.net/lijialong1313/article/details/54171535
對於問題2,參考 https://www.jianshu.com/p/2d3190f592c5
對於問題3,參考 https://blog.csdn.net/qq_39720249/article/details/85067931
對於問題4,採用以下方法
替換成功 黑色背景綠色文字,窗口7秒後自動關閉
不成功 黑色背景紅色文字,窗口不會自動關閉apache

bat文件申請管理員權限的方法百度上有好幾種,我隨便選擇了一種網絡

附上我使用的代碼.net

@echo off
title hosts文件替換
REM ________________________________________________________________
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo 請求管理員權限...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B

:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd %~dp0
echo %cd%

REM ________________________________________________________________
echo.
echo.
SET SourceFile=%cd%\hosts
SET GenFile=C:\Windows\System32\drivers\etc\hosts
if exist %SourceFile% (
    echo.
    echo.
    color 0A
    echo hosts文件存在-備份-更新
    move %GenFile% %GenFile%.old
    copy %SourceFile% %GenFile%
    popd
    echo 更新完成
    >nul TIMEOUT /T 7
) else (
    color 0C
    echo.
    echo.
    echo hosts文件不存在
    pause>nul
)
echo.
echo.

UNC路徑的問題,關鍵部分代碼以下
pushd %~dp0 映射爲網絡驅動器
popd 釋放映射命令行

cd /d %~dp0
echo %cd%

pushd %~dp0
echo %cd%
popd
pause

CSDN博主「故三殤」的文檔我參考了部分,感受之後必定還會用到,所以轉載了過來code

CSDN博主「故三殤」的原創文章
原文連接:https://blog.csdn.net/qq_39720249/article/details/85067931blog

經過複製方法建立文件或目錄

@echo off
echo result.jtl文件判斷
SET SourceFile=G:\Jmeter\apache-jmeter-5.0\report\backup\result.jtl
SET GenFile=G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl

if not exist %GenFile% (
        rem 複製文件result.jtl
        copy %SourceFile% %GenFile%
        echo %GenFile% 文件不存在,已建立該文件!
    ) else (
        echo %GenFile% 文件已存在,無需建立!
    )

複製目錄(包括空目錄):rem

@echo off
echo OutReport目錄判斷
SET SourceFolder=G:\Jmeter\apache-jmeter-5.0\report\backup\OutReport
SET GenFolder=G:\Jmeter\apache-jmeter-5.0\report\OutReport\

if not exist %GenFolder% (
        rem 複製目錄G:\Jmeter\apache-jmeter-5.0\report\backup\OutReport到G:\Jmeter\apache-jmeter-5.0\report路徑下
        Xcopy %SourceFolder% %GenFolder%  /s/e/h/i
        echo %GenFolder%目錄不存在,已建立該目錄!
    ) else (
        rem 目錄G:\Jmeter\apache-jmeter-5.0\report\OutReport已存在,無需建立
        echo %GenFolder%目錄已存在,無需建立!
    )

複製文件和目錄(包括空)文檔

@echo off
echo result.jtl文件判斷
SET SourceFile=G:\Jmeter\apache-jmeter-5.0\report\backup\result.jtl
SET GenFile=G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl

if not exist %GenFile% (
        rem 複製文件result.jtl
        copy %SourceFile% %GenFile%
        echo %GenFile% 文件不存在,已建立該文件!
    ) else (
        echo %GenFile% 文件已存在,無需建立!
    )

echo OutReport目錄判斷
SET SourceFolder=G:\Jmeter\apache-jmeter-5.0\report\backup\OutReport
SET GenFolder=G:\Jmeter\apache-jmeter-5.0\report\OutReport\

if not exist %GenFolder% (
        rem 複製目錄G:\Jmeter\apache-jmeter-5.0\report\backup\OutReport到G:\Jmeter\apache-jmeter-5.0\report路徑下
        Xcopy %SourceFolder% %GenFolder%  /s/e/h/i
        echo %GenFolder%目錄不存在,已建立該目錄!
    ) else (
        rem 目錄G:\Jmeter\apache-jmeter-5.0\report\OutReport已存在,無需建立
        echo %GenFolder%目錄已存在,無需建立!
    )

經過新建方法建立文件和目錄

新建文件get

@echo off
echo result.jtl文件判斷
SET GenFile=G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl

if not exist %GenFile% (
        rem 建立空文件G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl
        rem 若是須要添加內容,少許的,能夠用內容把「nul」替換掉,好比:type 這是文件內容>%GenFile%;多的話則使用複製方法
        type nul>%GenFile%
        echo %GenFile%文件不存在,已建立該文件!
    ) else (
        rem 文件G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl已存在,無需建立
        echo %GenFile%文件已存在,無需建立!
    )

新建空目錄cmd

@echo off
echo OutReport目錄判斷
SET GenFolder=G:\Jmeter\apache-jmeter-5.0\report\OutReport

if not exist %GenFolder% (
        rem 建立空目錄G:\Jmeter\apache-jmeter-5.0\report\OutReport
        rem 建立非空目錄,使用複製方法
        echo %GenFolder%目錄不存在,已建立該目錄!
        md %GenFolder%
    ) else (
        rem 目錄G:\Jmeter\apache-jmeter-5.0\report\OutReport已存在,無需建立
        echo 目錄%GenFolder%目錄已存在,無需建立!
    )

目錄下是否存在.jtl後綴名文件判斷

@echo off
echo .jtl後綴名文件判斷
SET GenFile="G:\Jmeter\apache-jmeter-5.0\report\jtl"\***.jtl

if not exist %GenFile% (
        rem 建立空文件G:\Jmeter\apache-jmeter-5.0\report\jtl\newfile.jtl
        rem 若是須要添加內容,少許的,能夠用內容把「nul」替換掉,好比:type 這是文件內容>文件路徑\新文件名;多的話則使用複製方法
        type nul>G:\Jmeter\apache-jmeter-5.0\report\jtl\newfile.jtl
        echo %GenFile%文件不存在,已建立該文件!
    ) else (
        rem 文件"G:\Jmeter\apache-jmeter-5.0\report\jtl"\***.jtl已存在,無需建立
        echo %GenFile%文件已存在,無需建立!
    )

新建文件和目錄

@echo off
echo result.jtl文件判斷
SET GenFile=G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl

if not exist %GenFile% (
        rem 建立空文件G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl
        rem 若是須要添加內容,少許的,能夠用內容把「nul」替換掉,好比:type 這是文件內容>%GenFile%;多的話則使用複製方法
        type nul>%GenFile%
        echo %GenFile%文件不存在,已建立該文件!
    ) else (
        rem 文件G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl已存在,無需建立
        echo %GenFile%文件已存在,無需建立!
    )


echo OutReport目錄判斷
SET GenFolder=G:\Jmeter\apache-jmeter-5.0\report\OutReport

if not exist %GenFolder% (
        rem 建立空目錄G:\Jmeter\apache-jmeter-5.0\report\OutReport
        rem 建立非空目錄,使用複製方法
        echo %GenFolder%目錄不存在,已建立該目錄!
        md %GenFolder%
    ) else (
        rem 目錄G:\Jmeter\apache-jmeter-5.0\report\OutReport已存在,無需建立
        echo 目錄%GenFolder%目錄已存在,無需建立!
    )


echo 全部.jtl後綴名文件判斷
SET GenFile="G:\Jmeter\apache-jmeter-5.0\report\jtl"\***.jtl

if not exist %GenFile% (
        rem 建立空文件G:\Jmeter\apache-jmeter-5.0\report\jtl\newfile.jtl
        rem 若是須要添加內容,少許的,能夠用內容把「nul」替換掉,好比:type 這是文件內容>文件路徑\新文件名;多的話則使用複製方法
        type nul>G:\Jmeter\apache-jmeter-5.0\report\jtl\newfile.jtl
        echo %GenFile%文件不存在,已建立該文件!
    ) else (
        rem 文件"G:\Jmeter\apache-jmeter-5.0\report\jtl"\***.jtl已存在,無需建立
        echo %GenFile%文件已存在,無需建立!
    )
相關文章
相關標籤/搜索