windows - 批处理 - 在 'UNC error' 修改 cd 变量之前获取当前目录

标签 windows batch-file

当我在网络驱动器上运行批处理文件时,出现“不支持 UNC 路径”错误。

我想将批处理文件的当前目录存储在一个变量中,这样我就可以在当前目录更改为“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

只要您包含一个包含游戏文件的名为“core”的文件夹,它就应该在您放置它的任何地方运行。通常它是:%cd%\core。如果你往下看代码的底部,你会发现它需要将目录更改为:%cd%\core\.minecraft\bin 才能开始游戏...但是没有当前的目录变量,我不能那样做。

最佳答案

设置批处理文件的目录通常由

set "dirofbatch=%~dp0"

(将包括终端-\)

APPDATA 是 Windows 的保留名称之一 - 由系统为每个 BATCH session 建立。可能是它的值被某个进程假定了,而你已经设置到某个意想不到的地方。我建议您将该变量名更改为其他名称。

同样,choice 是一个批处理关键字 - 我建议您再做一个名称选择。这可能不会真正影响批处理,只是避免陷阱的问题。

关于windows - 批处理 - 在 'UNC error' 修改 cd 变量之前获取当前目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18028387/

相关文章:

windows - 批处理文件中的 "%1"和 "%2"是什么?

c# - Process.Start 无法正确运行批处理文件

windows - 如何将名称设置为 Win32 线程?

windows - For 循环运行两次,但仅针对第一个文件

c++ - 如何修复 'Vcpkg/CMake Is Unable to determine target architecture'(Windows10、vcpkg、clion、cmake)

c++ - Qt Creator 中的 Gotoline

windows - 批处理以隔离具有多个项目的文本文件中的最后一个项目

mysql - 对于...中的文件 mysql 更新

windows - 如何将批处理脚本中循环的每次迭代发送到新的 cmd 窗口并继续循环

windows - Git bash 无法访问新机器上的主目录