你好,程序员。
坦率地说,我仍然是编程世界的初学者。我想我确实找到了解决问题的答案。但是,我缺乏编程技巧确实使我退缩...
我们要更改要添加到站点的移动PC的主机文件。但是客户端不太熟悉计算机,这就是为什么我想要创建一个批处理文件来为它们进行更新的原因。
想法是-复印原始文件并复制日期。-更新主机文件。
由于处理赢10和7,我们发现有时我们不能直接更新主机文件而不先复制它,然后覆盖原始文件。因此,我认为可行的程序是这样。
您可以看到该程序看起来并不困难,但是由于特权错误,我遇到了一个错误。因此,由于我们的客户缺乏足够的知识,我想尝试通过我的批处理文件来提升它。
我在这里捆绑搜索,找到了帖子“ How can I auto-elevate my batch file, so that it requests from UAC administrator rights if required?”。但是不幸的是,我的VBS和批处理知识不是那么高,我希望有人可以帮助我解密它。
我创建的代码:
::the copy to desktop command xcopy /s C:\Windows\System32\drivers\etc\hosts %userprofile%\desktop
::the update of hosts file
echo www.qpv-view.info xxx.xxx.xxx.xxx >hosts
::the date for the copied hosts file
@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2% set stamp=Oldhosts_%YYYY%%MM%%DD%
copy /y C:\Windows\System32\drivers\etc\hosts C:\Windows\System32\drivers\etc\%stamp%
::The override of the updated file
move /s/Y %userprofile%\desktop\hosts C:\Windows\System32\drivers\etc
end
启动时,该副本可以正常工作。但是,更新部分需要提升的特权。但是,如果我以提升的特权启动脚本,则不会发生复制。
如果有人有更好的方法,我将不知所措。
让我知道是否需要其他信息。
干杯!
由于未定义stamp
,此行将在其自身上复制主机文件:
copy /y C:\Windows\System32\drivers\etc\hosts C:\Windows\System32\drivers\etc\%stamp%
因为它等效于:
copy /y C:\Windows\System32\drivers\etc\hosts C:\Windows\System32\drivers\etc\