ログインしているユーザーが特定のユーザーであるかどうかを確認するために構成しているバッチファイルがあります。私が何をしても、バッチファイルは常に) ELSE (
行でクラッシュします。私はこれに 5 時間費やしましたが、以前のコマンドよりも確実にコマンドを縮小および改善しましたが、まだ機能していません。それを機能させる方法についての提案をいただければ幸いです(また、私が明らかに愚かなことをしている場合は、お知らせください。バッチファイルに関しては、私は一種のダミーです):
@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
アップデート
それで、私は自分のバージョンを書き直しましたが、正直なところ、オリジナルと書き直しの間に大きな違いは見られませんが、書き直しはうまくいきました. ただし、Microsoft の厚意により、このスクリプトを使用することはできません。問題は、通常のユーザーがドライブをフォーマットできないことです。それはウィンドウを投げ出し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
いますが、それは汚いと感じます...