Batch file 批处理目录名

Batch file 批处理目录名,batch-file,Batch File,如何在批处理文件内的变量中存储目录名???要返回存储批处理文件的目录,请使用 set dirname=c:/some/folder echo %dirname% REM retrieve the last letter of the folder REM and save it in another variable set lastLetter=%dirname:~-1% echo %lastLetter% %~dp0 %0是批处理文件的完整路径 set src= %~dp0 ec

如何在批处理文件内的变量中存储目录名???

要返回存储批处理文件的目录,请使用
set dirname=c:/some/folder

echo %dirname%

REM retrieve the last letter of the folder 
REM and save it in another variable

set lastLetter=%dirname:~-1%

echo %lastLetter%
%~dp0

%0是批处理文件的完整路径

set src= %~dp0
echo %src%

当我希望某些文件与批处理文件相关时,我就使用了这个文件。

如果没有更高的精度,很难帮助您

也许你想要当前目录

set name=%CD%
echo %name%

使用设置命令

例如:

rem Assign the folder "C:\Folder1\Folder2" to the variable "MySavedFolder"
set MySavedFolder=C:\Folder1\Folder2

rem Run the program "MyProgram.exe" that is located in Folder2
 %MySavedFolder%\MyProgram.exe
rem Run the program "My Second Program.exe" that is located in Folder 2 (note spaces in filename)
"%MySavedFolder%\My Second Program.exe"
rem Quotes are required to stop the spaces from being command-line delimiters, but the command interpreter (cmd.exe) will still substitute the value of the variable.
要删除变量,请不为名称指定任何内容:

set MySavedFolder=


由于您在一个批处理文件中,我建议在文件末尾使用setlocalendlocal包围您的变量用法;这使您的环境变量成为批处理文件的本地变量,并且不会污染全局环境命名空间。

要允许脚本确定其父文件夹目录名,请执行以下操作:

@echo off
::setlocal enableextensions,enabledelayedexpansion
SET CDIR=%~p0
SET CDIR=%CDIR:\= %
FOR %%a IN (%CDIR%) DO (
  SET CNAME=%%a
)
echo %CDIR%
echo %CNAME%
pause
或者,更好的是:

@echo off
::setlocal enableextensions,enabledelayedexpansion
SET CDIR=%~p0
SET CDIR=%CDIR:~1,-1%
SET CDIR=%CDIR:\=,%
SET CDIR=%CDIR: =_%
FOR %%a IN (%CDIR%) DO SET "CNAME=%%a"
echo %CDIR%
SET CNAME=%CNAME:_= %
echo %CNAME%
pause

您从哪里获取目录名?你想定义一个常数吗?批处理文件的参数?当前目录?要存储的任何文件夹名称!要存储的目录的名称?Tks。。。我的另一个问题是,假设我现在有“dirname”。有什么方法可以让我得到这封信的最后一个字母吗???用一个检索最后一个字母的例子更新了我的答案。在批处理中可以使用HTH.Substring:以这个引用为例