【发布时间】:2013-12-30 11:59:05
【问题描述】:
我需要创建一个 (.bat) 文件以通过 USB 运行以将文件和文件夹从该驱动器复制到每台计算机上的特定文件夹。例如。
xcopy \copy*.* C:\Windows\inf\ /h /e /i /k /y
上面的代码曾经在 Windows 7 上工作,但现在由于 Windows 8 上的新管理员限制不再工作。我已经设法让管理员有权使用我在这个网站上找到的下面的代码运行。
:::::::::::::::::::::::::::::::::::::::::
:: Automatically check & get admin rights
:::::::::::::::::::::::::::::::::::::::::
@echo off
CLS
ECHO.
ECHO =============================
ECHO Running Admin shell
ECHO =============================
:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if '%1'=='ELEV' (shift & goto gotPrivileges)
ECHO.
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation
ECHO **************************************
setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs"
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
"%temp%\OEgetPrivileges.vbs"
exit /B
:gotPrivileges
::::::::::::::::::::::::::::
:START
::::::::::::::::::::::::::::
setlocal & pushd .
REM Run shell as admin
xcopy \copy\*.* C:\Windows\inf\ /h /e /i /k /y
cmd /k
但现在我不断收到invalid directory,因为 USB 驱动器的位置不同,它在某些系统中显示为 (G:),而在其他系统中显示为 (H:)。我在这里走的是正确的道路,只是语法不正确还是完全错误?任何帮助将不胜感激。
你们知道,我正在复制带有一些隐藏文件和文件夹的驱动程序文件夹,并且所有系统都需要有相同的文件。
问候 亚当·M
【问题讨论】:
-
难道没有比在电脑里塞拇指驱动器四处走动更好的方法吗?
-
@AndrewBarber 肯定有。但无论预期用途如何,这个问题肯定可以归结为一个有效的问题。
-
这个问题可能会被否决,因为您没有充分描述您的问题,但实际上是在转储您的代码并要求我们告诉您哪里出错了。 - 您能否尝试告诉我们,您尝试过什么来解决您的问题以及为什么或如何没有奏效?您了解您找到并使用的代码吗?它有什么作用?等等……
标签: batch-file windows-8 syntax cmd windows-8.1