我有一个批处理文件,我正在配置它来检查登录的用户是否是特定用户。无论我做什么,批处理文件总是) ELSE (
在线崩溃。我在这上面花了五个小时,我确实缩小并改进了命令,但它仍然无法正常工作。我很感激任何关于如何让它工作的建议(另外,如果我做得很愚蠢,请告诉我,在批处理文件方面我有点傻):
@ECHO OFF
::
SETLOCAL
::
IF "%USERNAME%" EQU "jdoe" (
IMDISK -a -s 32M -m #: -p "/FS:exFAT /Q /Y /V:MERGEABLES"
FOR /F "tokens=2 delims==" %%D IN ('WMIC LOGICALDISK WHERE "size=33538048" GET Name /format:value'^) DO (
COPY "\\WIN2K8R2-F-01\Remote Applications\Batches\Merge PDFs.lnk" "%%D\Merge PDFs.lnk"
GOTO End
^)
) ELSE (
IMDISK -a -s 256M -m #: -p "/FS:exFAT /Q /Y /V:RAMDRIVE"
FOR /F "tokens=2 delims==" %%D IN ('WMIC LOGICALDISK WHERE "size=268304384" GET Name /format:value'^) DO (
COPY "\\WIN2K8R2-F-01\Remote Applications\Batches\Archive Folders.lnk" "%%D\Archive Folders.lnk"
GOTO End
^)
)
::
:End
::
IF EXIST "%SystemDrive%\BGInfo.exe" (
"%SystemDrive%\BGInfo.exe" "%SystemDrive%\BGInfo.bgi" /Timer:0 /AcceptEula /Silent
)
::
ENDLOCAL
更新
所以,我重写了我的版本,老实说,我看不出我的原版和重写版之间有什么区别,但重写版奏效了。但是,最后我不能使用这个脚本,因为微软的一个问题。问题是普通用户不允许格式化驱动器。这会抛出IMDISK
窗口,现在我将不得不处理隐藏的文件夹和快捷方式等RUNAS
,这无济于事,而且我无论如何也无法让它工作。我很确定我把它搞砸了,但我不明白追求修复的意义了。对于任何关心的人,这是脚本的最终版本。也许它会帮助别人:
@ECHO OFF
::
IF /I "%USERNAME%" EQU "jdoe" (
IMDISK -a -s 32M -m #: -p "/FS:exFAT /Q /Y /V:MERGEABLES"
::
TIMEOUT 4
::
FOR /F "tokens=2 delims==" %%D IN (
'WMIC LOGICALDISK WHERE "size=33423360" GET Name /format:value'
) DO (
PUSHD %%D
::
COPY "\\WIN2K8R2-F-01\Remote Applications\Batches\Merge PDFs.lnk" "Merge PDFs.lnk"
::
POPD
::
GOTO End
)
) ELSE (
IMDISK -a -s 256M -m #: -p "/FS:exFAT /Q /Y /V:RAMDRIVE"
::
TIMEOUT 4
::
FOR /F "tokens=2 delims==" %%D IN (
'WMIC LOGICALDISK WHERE "size=268304384" GET Name /format:value'
) DO (
PUSHD %%D
::
COPY "\\WIN2K8R2-F-01\Remote Applications\Batches\Archive Folders.lnk" "Archive Folders.lnk"
::
POPD
::
GOTO End
)
)
::
:End
::
IF EXIST "%SystemDrive%\BGInfo.exe" (
"%SystemDrive%\BGInfo.exe" "%SystemDrive%\BGInfo.bgi" /Timer:0 /AcceptEula /Silent
)
我不知道的一件事是如何将%%D
变量从循环直接传递给COPY
命令。这就是我使用PUSHD
and的原因POPD
,但这只是感觉很脏......