.bat获取当前路径

@echo off
setlocal EnableDelayedExpansion
echo 当前正在运行的批处理文件所在路径:!cd!
pause

@echo off

echo 当前目录是:%cd%

pause

@echo off

:: set "abc=%cd%"
echo 当前正在运行的批处理文件所在路径:%~dp0

pause

@echo off
echo 当前的盘符及路径:%~dp0
echo 当前的盘符及路径的短文件名格式:%~sdp0
pause

@echo 取当前文件的上级目录的名称
set a=D:\abc\def ghi\j k\lmn.bat
for %%a in ("%a%") do (
        set ok=%%~dpa
        for /f "delims=" %%b in ("!ok:~0,-1!") do (
                echo %%~nb
        )
)
pause

下面贴一个自己写的bat文件,功能是写入注册表,效果等价于配置系统的环境变量,使得NotePad2可以通过命令行启动

@echo off
Setlocal ENABLEDELAYEDEXPANSION
if exist \Notepad2.reg (
del \Notepad2.reg
)
set var=%cd%
set str=%var%
set chr=\
rem echo %chr%
rem pause
:next
if not "%str%"=="" (
if "!str:~0,1!"=="%chr%" (set var1=%var1%%chr%%chr%)
if not "!str:~0,1!"=="%chr%" (set var1=%var1%%str:~0,1%)
set "str=%str:~1%"
::echo %str%
goto next
)
rem pause
echo Windows Registry Editor Version 5.00>>\Notepad2.reg

echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Notepad2.exe]>>\Notepad2.reg
echo @="%var1%\\Notepad2.exe">>\Notepad2.reg
echo "Path"="%var1%">>\Notepad2.reg

\Notepad2.reg
del \Notepad2.reg

说明:将该文件保存为bat文件后,放入应用程序可执行文件所在文件目录(Notepad2.exe即为应用程序执行文件名),运行即可在App Paths中注入注册信息。

 

<think> 我们是在Windows批处理(.bat)环境中操作。用户询问如何获取当前.bat文件所在的路径。 根据之前的引用[1]和[2],我们可以使用`%~dp0`来获取当前批处理文件所在的目录路径(包括末尾的反斜杠)。 例如,如果批处理文件位于"D:\project\start.bat",那么`%~dp0`的值就是"D:\project\"。 此外,引用[2]提到可以使用`cd /d %~dp0`来切换到当前批处理文件所在的目录,这样后续操作就可以基于该目录进行。 因此,获取当前文件路径的方法很简单:使用`%~dp0`。 注意:`%~dp0`返回的是驱动器和路径,且以反斜杠结束。例如:"C:\myfolder\"。 我们可以这样写: set "current_path=%~dp0" 如果要去掉末尾的反斜杠,可以使用一些字符串处理,但通常不需要,因为在使用时可以直接拼接文件名。 另外,引用[1]中提供了获取上一级目录的方法,但用户目前只需要当前路径。 下面我们给出一个示例: </think> ### 在.bat文件中获取当前文件路径的方法 在Windows批处理文件中,获取当前脚本所在路径的方法非常简单可靠: ```bat @echo off :: 获取当前bat文件的完整路径(带文件名) echo 文件完整路径: %~f0 :: 获取当前bat文件所在目录(最常用方法) set "current_dir=%~dp0" echo 文件所在目录: %current_dir% :: 切换到当前目录(避免相对路径问题) cd /d %~dp0 echo 当前工作目录: %cd% ``` #### 关键参数说明(所有路径变量都需要用`%`符号包裹): | 变量表达式 | 返回值示例 | 说明 | |----------------|----------------------------|----------------------------------| | `%~f0` | `D:\project\start.bat` | 当前bat文件的**完整绝对路径** | | `%~dp0` | `D:\project\` | 当前bat文件所在**目录路径** (推荐) | | `%~nx0` | `start.bat` | 当前bat文件的文件名(含扩展名) | | `cd %~dp0` | - | 切换工作目录到bat所在位置[^2] | #### 使用技巧: 1. **路径操作**:结合字符串处理获取父目录: ```bat :: 获取上一级目录 for %%i in ("%~dp0..\") do set "parent_dir=%%~fi" echo 上级目录: %parent_dir% ``` 2. **环境变量传递**:将路径设置为环境变量供其他程序使用: ```bat set "APP_HOME=%~dp0" python main.py --config "%APP_HOME%config\settings.ini" ``` 3. **相对路径安全**:所有文件操作前先切换目录: ```bat cd /d %~dp0 java -jar lib\app.jar // 此时lib是相对于bat目录的子文件夹 ``` > **重要提示**:`%~dp0`返回的路径**始终以反斜杠结尾**,如`C:\project\`。在拼接路径时可直接使用`"%current_dir%subfolder\file.txt"`,无需额外添加路径分隔符[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值