2016-03-29 12 views
0

バッチでプログラムを作成してIP設定を簡単にしていますが、エラーが発生しています。バッチ変数内に変数があります

これが問題を引き起こしている:

for /f "usebackq tokens=3* skip=2" %%D IN (`reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) do set desktop=%%D 

だから、これはエラーを提供します:

powershell "$s=(New-Object -COM WScript.Shell).CreateShortcut('%desktop%\IP Configurator.lnk');$s.TargetPath='%0';$s.IconLocation = 'C:\Windows\System32\Shell32.dll,273';$s.Save();$bytes = [System.IO.File]::ReadAllBytes('%desktop%\IP Configurator.lnk');$bytes[0x15] = $bytes[0x15] -bor 0x20;[System.IO.File]::WriteAllBytes('%desktop%\IP Configurator.lnk', $bytes);Write-Output 'Shortcut created (or there was an error), press a key to continue'" 

しかし、それはそれのために複数のエラーになり、このエラー、出力:

Unable to save shortcut "C:\Users\Ryan\Desktop\programs\IP_Configurator\%USERPROFILE%\Desktop\IP Configurator.lnk". 
At line:1 char:235 
+ ... conLocation = 'C:\Windows\System32\Shell32.dll,273';$s.Save();$bytes ... 
+               ~~~~~~~~~ 
    + CategoryInfo   : OperationStopped: (:) [], DirectoryNotFoundException 
    + FullyQualifiedErrorId : System.IO.DirectoryNotFoundException 

私には分かりませんが、それはデスクトップの権利を得られないということです。それはacではないからだと思います正確には%USERPROFILE%が何であるかを計算し、文字通りかっこで変数名を使用するだけです。変数値が何であるかを読み込むには、どうすればよいですか?

+0

を解決することによって、あなたの問題を治す必要があります:\ユーザーはライアン\デスクトップ\プログラムを\ \ IP_Configurator \%USERPROFILE%\デスクトップ\ IP Configurator.lnk'が存在しません。 '%USERPROFILE%'には完全なパスが含まれているので、 'C:¥Users¥Ryan¥Desktop¥programs¥IP_Configurator¥C:¥Users¥Ryan¥Desktop¥IP Configurator.lnk'に展開します... – aschipfl

+0

私は知っていますなぜ、それが拡大していないのかわからなかったのです –

答えて

1
for /f "usebackq tokens=3* skip=2" %%D IN (`reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) do set desktop=%%D 
CALL SET "desktop=%desktop%" 
ECHO %desktop% 

はパス `C %uerprofile%

+0

ありがとう、それは今働きます! –

関連する問題