Batch file CMD/batch获取子文件夹的basename

Batch file CMD/batch获取子文件夹的basename,batch-file,cmd,directory,Batch File,Cmd,Directory,我想循环浏览c:\my_文件夹中的所有子文件夹,检查指定的文件是否存在,然后在c:\copy中创建(如果不存在)文件夹(例如c:\copy\project1)并复制提到的文件 在批处理文件(for/d%variable in(“path”)DO命令中)的文件夹中循环是否容易, 但变量包含完整路径。要创建新文件夹,我只需要子文件夹的basename。 我怎样才能得到它?当我删除其他字符时,是否应该编写另一个for循环? 有没有更简单的方法?如果我理解正确,您只需要文件夹名。在这种情况下,这很容易:

我想循环浏览
c:\my_文件夹中的所有子文件夹,检查指定的文件是否存在,然后在
c:\copy
中创建(如果不存在)文件夹(例如
c:\copy\project1
)并复制提到的文件

在批处理文件(
for/d%variable in(“path”)DO命令中)的文件夹中循环是否容易,
但变量包含完整路径。要创建新文件夹,我只需要子文件夹的basename。
我怎样才能得到它?当我删除其他字符时,是否应该编写另一个for循环?

有没有更简单的方法?

如果我理解正确,您只需要文件夹名。在这种情况下,这很容易:

for /d %%d in (C:\my_folder) do echo %%~nxd

乔伊说的。另一方面,您可以尝试一种完全不同的方法:

XCOPY "C:\my_folder\my_file" "C:\copy" /S /I

这将把指定的文件从
C:\my\u folder
的所有子文件夹复制到
C:\copy
,并保留结构。不会在
C:\copy
中创建没有
my\u文件的子文件夹。
/S
开关告诉
XCOPY
在子文件夹中搜索
myu文件。
/I
参数用于在继续之前确保
C:\copy
应该是一个文件夹。

那么,我是否应该在(C:\my\u folder)do(xcopy%%d\myfile C:\copy/S/I)中键入这样的内容:for/d%%d?我现在不能检查它,因为我目前在Linux机器下工作。@matandked:不,只是
xcopy
,没有任何循环。至少,这是我所尝试的,并且它以我在回答中描述的方式对我有效。