2013-08-03 37 views
1

當我在網絡驅動器上運行批處理文件時,出現「UNC Paths not supported」錯誤。批處理 - 在'UNC錯誤'修改cd變量之前獲取當前目錄

我想將批處理文件的當前目錄存儲在一個變量中,所以我可以在當前目錄更改爲「C:\ Windows」之前通過pushd命令切換到它。

對不起,如果我錯過了什麼!

編輯:

繼承人的代碼:

@echo off 
SETLOCAL EnableExtensions 
title School Minecraft Hunger Games Launcher 
set appdata=%cd%\core 
set usrname=%USERNAME% 
:lol 
cls 
set choice= 
echo ------------------------------------------------------------------------------- 
echo       School Minecraft Launcher v4.2     
echo       Minecraft Version: 1.5.2 
echo ------------------------------------------------------------------------------- 
echo Logging in with the name "%usrname%". Is this correct? (y/n) 
set /p choice= 
if "%choice%"=="y" goto check 
if "%choice%"=="yes" goto check 
if "%choice%"=="n" goto argue 
if "%choice%"=="no" goto argue 
echo. 
echo That is not a recognized command, Press enter to try again. 
pause > nul 
goto lol 
:argue 
cls 
set provide2= 
echo To change your ingame username, please provide the override password: 
echo. 
echo Type "back" to cancel. 
echo. 
set /p provide2=Password: 
if "%provide2%"=="changename" goto enternewname 
if "%provide2%"=="back" goto lol 
echo. 
echo Incorrect Password. 
echo. 
echo Press enter to try again... 
pause > nul 
goto argue 
:enternewname 
cls 
echo Please enter new name, then press enter: 
set /p usrname= 
goto lol 
:check 
cls 
if "%usrname%"=="user1" set knee=watermelon 
if "%usrname%"=="user2" set knee=computer 
if "%usrname%"=="user3" set knee=fish 
if "%usrname%"=="user4" set knee=kittens 
:final 
if "%knee%"=="" goto rungame 
cls 
set provide= 
echo ------------------------------------------------------------------------------- 
echo       School Minecraft Launcher v4a     
echo       Minecraft Version: 1.5.2 
echo ------------------------------------------------------------------------------- 
echo You are trying to login as an admin. Please provide your password. 
echo. 
echo Username: %usrname% 
set /p provide=Password: 
if "%knee%"=="%provide%" goto rungame 
echo. 
echo Incorrect password. 
echo. 
echo Press enter to exit... 
pause > nul 
exit 
:rungame 
pushd "%appdata%\.minecraft\bin" 
start javaw -cp minecraft.jar;lwjgl.jar;lwjgl_util.jar -Djava.library.path="natives" net.minecraft.client.Minecraft "%usrname%" 
exit 

它應該運行,無論你說的那樣,只要你已經包括所謂的「核心」文件夾中包含的遊戲文件。通常會是:%cd%\core。如果你仔細觀察代碼的底部,你會發現它需要將目錄更改爲:%cd%\core\.minecraft\bin以啓動遊戲......但是沒有當前的目錄變量,我無法做到這一點。由系統爲每個BATCH建立 -

+0

請編輯問題以包含批處理文件的相關部分。問到你編寫的代碼時需要包含代碼;當你不告訴我們你在做什麼時,很難回答爲什麼它不起作用的問題。 –

+0

[如何從網絡共享中運行批處理文件而不使用「UNC路徑不支持」消息?]可能的重複?](http://stackoverflow.com/questions/9013941/how-to-run-batch-file-from-network -share-without-unc-path-are-not-supported-me) – shf301

+0

我不認爲它是重複的... – magicbennie

回答

3

設置批處理文件的目錄由

set "dirofbatch=%~dp0" 

(其中將包括端 - \

APPDATA是窗保留名一個正常完成會話。它可能是某個過程假定它的價值,並且你已經設定到某個意想不到的地方。我建議你改變這個變量名到別的東西。

同樣,choice是一個批處理關鍵字 - 我建議你再做一個名字的選擇。這可能不會實際影響批次,只是避免陷阱的問題。

+1

我的世界玩家經常改變'APPDATA'變量,通常它是有效的。但要開始遊戲,當前目錄也必須設置爲'... \。minecraft \ bin'。我想,這可能是Java或Minecraft問題,而不是批處理問題。 – Endoro

+0

謝謝!完美的作品!是的,將appdata變量更改爲自定義位置是有意的,它允許遊戲是可移植的,而不僅僅侷限於appdata文件夾。 @endoro批處理代碼底部的第三行將cd更改爲遊戲的bin文件夾,然後在下一行中實際啓動遊戲本身。 :) – magicbennie

0

將此行添加爲程序中頭幾行(在訪問任何文件/文件夾之前)之一。

pushd %~dp0 
+0

這是否推動只是蝙蝠文件,或整個文件夾它在?因爲我需要它來取整個文件夾。 – magicbennie

+0

由於教育原因,您應該添加3行。 1. ECHO.CD =%CD%2. PUSHD 3. ECHO。CD =%CD%你會看到最初的當前目錄是什麼,在PUSHD之後,當前目錄將是你最初預期的內容(從你執行bat文件的目錄)。 – RGuggisberg