Windows 使用当前路径位置设置变量的批处理脚本

Windows 使用当前路径位置设置变量的批处理脚本,windows,batch-file,cmd,Windows,Batch File,Cmd,如何使用当前位置设置变量?例如,如果我进入c:\test并想将变量设置为test,如果我进入c:\test\test2中,变量将设置为test2 我正在考虑使用for进入许多文件夹,检查是否存在某些文件,如果存在正确的文件,我想将当前文件夹设置为一个变量,以便复制路径并复制文件夹 复制其余文件的主要问题是与.inf文件相同的文件夹。当前目录位于“shadow”变量cd中。 你可以试试 set "var=%cd%" 这将扩展到当前运行的批处理文件的驱动器和路径中。我通常会在批处理文件周围添加以下

如何使用当前位置设置变量?例如,如果我进入
c:\test
并想将变量设置为
test
,如果我进入
c:\test\test2
中,变量将设置为
test2

我正在考虑使用
for
进入许多文件夹,检查是否存在某些文件,如果存在正确的文件,我想将当前文件夹设置为一个变量,以便复制路径并复制文件夹


复制其余文件的主要问题是与.inf文件相同的文件夹。

当前目录位于“shadow”变量cd中。
你可以试试

set "var=%cd%"
这将扩展到当前运行的批处理文件的驱动器和路径中。我通常会在批处理文件周围添加以下内容:

@echo off
pushd %~dp0

...

popd

编辑:似乎我不理解操作。我的示例获取当前运行脚本的位置,而不是“当前目录”+1给杰布。

我想这里有点混乱。%CD%始终具有当前目录,因此无需添加任何内容即可拥有它。但是,通过重新阅读您原来的问题,我认为您需要当前目录的最后一部分,即当前位置的名称,不包括以前的所有位置。如果是,则您可以使用以下方法:

set i=0
:nextdir
set /a i+=1
for /f "tokens=%i% delims=\" %%a in ("%CD%") do if not "%%a" == "" set lastdir=%%a& goto nextdir
echo Current location: %lastdir%

%~dp0可以是当前位置,但前提是批处理文件位于当前目录中。但是你的回答很有帮助,因为这通常是requirement@massaki:在命令提示下不工作;它只能在批处理文件中工作
%dp0
是批处理文件的第0个参数的驱动器和路径,这是批处理文件本身的完整路径。FWIW我来这里是为了寻找您提供的答案-因此OP的标题非常接近,我跟随了链接。谢谢,我也是。我试过杰布的命令,但后来意识到你的命令比我的脚本更有效。谢谢大家。谢谢你们,成功了!!虽然我如何做一个让他进入文件夹和子文件夹以及每一级,他添加一个变量到%cd%。。所以变量中的每个文件夹都将是当前路径..这是为像我这样的人刚刚添加了额外的空格和=<代码>设置“var=%cd%”必须删除空格。对于那些完全不熟悉DOS批处理脚本的人来说,知道本例中的var应替换为您为变量选择的任何名称可能会有所帮助,而%cd%应保持原样。例如:
设置“currentDirectory=%cd%
。然后在其他地方使用变量作为
%currentDirectory%
。如前所述,不要向该命令添加空格。我知道这很旧,但只想让您知道:delims=\”的错误此时是意外的。
set i=0
:nextdir
set /a i+=1
for /f "tokens=%i% delims=\" %%a in ("%CD%") do if not "%%a" == "" set lastdir=%%a& goto nextdir
echo Current location: %lastdir%