我有一个批处理文件,我使用xcopy
来移动一些文件。问题是在使用xcopy
我使用通配符时因为我不知道文件扩展名但我知道文件名。但是,我需要知道完整的文件名才能执行下一个命令,在这种情况下将其添加到svn。
以下是该批次的代码片段:
xcopy /q /y C:\path\to\file\image.* D:\svn\folder
svn add D:\svn\folder\image.??? <-- not sure what to do here
我考虑过为/f
使用xcopy
标记,但这会产生源和目标路径,我只需要文件名。另外,我必须再次将命令放在FOR
中,只是将它放在一个变量中,假设我可以从该命令中获取文件名。
我有什么选择?如何在使用通配符时获取完整的文件名,以便将此文件添加到svn?
答案 0 :(得分:1)
您可以将代码包装在for循环中,该循环仅针对您感兴趣的文件进行迭代。
FOR %%F in ("C:\path\to\file\image.*") do (
xcopy /q /y %%F D:\svn\folder
svn add D:\svn\folder\%%~nxF
)
在循环内部,您可以使用迭代变量本身(在我的示例中为%%F
)来引用文件的完整路径名。要引用带扩展名的裸文件名,请在变量名称~nx
)之前插入%%~nxF
。
另一种选择是在变量中获取文件名和扩展名:
FOR %%F in ("C:\path\to\file\image.*") do set FILENAME=%%~nxF
xcopy /q /y C:\path\to\file\%FILENAME% D:\svn\folder
svn add D:\svn\folder\%FILENAME%
使用这种方法,您必须在代码中重复目录名C:\path\to\file\
或将其放在另一个变量中并重复使用。