如何使用管理员权限打开.conf文件,使用bat

时间:2017-07-07 16:42:58

标签: batch-file

这是conf文件的内容

使用chroot = false

strict modes = false

主机允许= *

log file = rsyncd.log

我需要在开头

中添加这两行

uid = 0的

GID = 0

以及最后的其他行

[数据]

path = / cygdrive / d /我的文件

只读= false

transfer logging = yes

[邮件]

path = / cygdrive / d / mail

只读= false

transfer logging = yes

随着蝙蝠的完成,我将通过我的网络上的政策进行部署。

我真的很新,但我感谢你的帮助。为我的英语道歉。

我尝试使用此代码:

@echo off
Color 9A & Mode con cols=83 lines=5
Title %~n0 Adding lines to rsyncd.conf
:::::::::::::::::::::::::::::::::::::::::
:: Automatically check & get admin rights
:::::::::::::::::::::::::::::::::::::::::
REM  --> Check for permissions
Reg query "HKU\S-1-5-19\Environment" >nul 2>&1
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
Echo.
ECHO                      **************************************
ECHO                       Running Admin shell... Please wait...
ECHO                      **************************************
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
::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
set "hostspath=C:\Program Files (x86)\ICW\rsyncd.conf"
FIND /C /I "uid=0" "%hostspath%" >nul
FIND /C /I "gid=0" "%hostspath%" >nul
FIND /C /I "[data]" "%hostspath%" >nul
FIND /C /I "path = /cygdrive/d/My documents" "%hostspath%" >nul
FIND /C /I "read only = false" "%hostspath%" >nul
FIND /C /I "transfer logging = yes" "%hostspath%" >nul
FIND /C /I "[mail]" "%hostspath%" >nul
FIND /C /I "path = /cygdrive/d/mail" "%hostspath%" >nul
FIND /C /I "read only = false" "%hostspath%" >nul
FIND /C /I "transfer logging = yes" "%hostspath%" >nul
) 
Attrib +R "%hostspath%"

2 个答案:

答案 0 :(得分:0)

您可以使用View on JSFiddle获取管理员权限。只需使用此脚本将脚本复制到批处理文件的末尾:

{{1}}

答案 1 :(得分:0)

所有find命令都无效 - 他们只是检查字符串是否在文件中,如果找到则将errorlevel设置为0,否则设置为非0 - 但是已经完成{{ 1}}你对结果一无所知。

find

首先,检查文件中是否有:::::::::::::::::::::::::::: ::START :::::::::::::::::::::::::::: set "hostspath=C:\Program Files (x86)\ICW\rsyncd.conf" FIND /C /I "uid=0" "%hostspath%" >nul if not errorlevel 1 goto :eof Attrib -R "%hostspath%" (for %%a in ("gid=0" "uid=0") do echo %%~a)>tempfile.txt type "%hostspath%" >>tempfile.txt (for %%a in ("[data]" "uid=0" "path = /cygdrive/d/My documents" "read only = false" "transfer logging = yes" "[mail]" "path = /cygdrive/d/mail" "read only = false" "transfer logging = yes" ) do echo %%~a )>>tempfile.txt move /y tempfile.txt "%hostspath%" Attrib +R "%hostspath%" 。如果是,则假设作业已经完成并退出。

uid=0文件

中删除只读标志

.conf命令会在引号"中分配"值。依次为for,然后%%a每个值(echo删除封闭的引号)。封闭~命令的()允许将输出重定向到我命名为for的文件。

然后将现有tempfile.txt文件的内容键入tempfile

然后输出剩余的行,但这次重定向器.conf要附加到>>

然后将tempfile.txt移到tempfile.txt文件上并将其标记为只读。