【问题标题】:Batch file replacing issue批处理文件替换问题
【发布时间】:2016-03-13 12:43:28
【问题描述】:

我正在尝试通过使用批处理文件替换 C:\Windows\System32\GroupPolicy\Machine\Scripts 中的 scripts.ini 文件来更改我的组策略。批处理文件位于我桌面上一个名为 replacer 的文件夹中,自定义 scripts.ini 位于同一文件夹中。当我右键单击批处理文件并“以管理员身份运行”时,它突然找不到位于同一文件夹中的 scripts.ini 文件。当我不以管理员身份运行时,它会找到它,但无法替换组策略中的 scripts.ini 文件。

编辑: 这是代码(1行):

xcopy /s/y scripts.ini C:\Windows\System32\GroupPolicy\Machine\Scripts

【问题讨论】:

  • 也许您的代码有误 - 但我们无法确定,因为它是秘密的。
  • 编辑您的问题并发布您的代码!
  • 请参阅如何提问部分并发布代码,否则在这里没有任何帮助。无罪
  • 当您以管理员身份运行批处理文件时,它的当前目录是不同的,因此您需要为数据文件使用完整路径:xcopy /s/y C:\replacer\scripts.ini ...

标签: windows batch-file replace administrator


【解决方案1】:

当您通过双击运行批处理脚本时,当前目录将是脚本所在的文件夹。

但是当您通过鼠标右键单击以管理员身份运行脚本时,当前目录是其他目录,通常是C:\wINDOWS\system32

您的脚本可以使用%~dp0 来获取脚本安装位置的完整路径,因此您只需在源文件前面加上该路径即可:

xcopy /s/y "%~dp0scripts.ini" C:\Windows\System32\GroupPolicy\Machine\Scripts

如果你有额外的命令依赖于当前目录,那么我建议你使用 PUSHD 来改变你的当前目录

pushd "%~dp0"
xcopy /s/y scripts.ini C:\Windows\System32\GroupPolicy\Machine\Scripts

【讨论】:

  • 哦,好像还有个问题,不能覆盖原文件,因为是系统文件。即使是管理员。
  • /s 在这里不需要复制单个文件。但是在/Y 之外使用/R 可以覆盖带有系统属性集的目标文件。有关如何使用 XCOPY 复制单个文件的详细信息,请参阅 this answer
猜你喜欢
  • 1970-01-01
  • 2023-03-10
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 2015-05-03
相关资源
最近更新 更多