使用 xcopy 查找和复制文件
Use xcopy to find and copy file
xcopy
支持 *
通配符,甚至允许您克隆整个目录结构。我的项目使用了这些我需要分发的 Qt 库:
Qt5CLucene.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Help.dll
Qt5Multimedia.dll
Qt5Network.dll
Qt5PrintSupport.dll
Qt5Sql.dll
Qt5Svg.dll
Qt5Widgets.dll
Qt5Xml.dll
Qt5XmlPatterns.dll
它们并不都在 Qt 安装的同一个目录中,并且列表可能会更改 - 特别是添加内容。所以我想使用通配符 /*/
在目录树中的任何位置查找文件:
C:\Qt.3.0-64> xcopy ".\*\%NAME%.dll" "%~dp0\release"
它不起作用,找不到文件。这是完整的代码:
C:
cd C:\Qt.3.0-64\
For %%a in (
"Qt5CLucene"
"Qt5Core"
"Qt5Gui"
"Qt5Help"
"Qt5Multimedia"
"Qt5Network"
"Qt5PrintSupport"
"Qt5Sql"
"Qt5Svg"
"Qt5Widgets"
"Qt5Xml"
"Qt5XmlPatterns"
) do (
xcopy ".\**\%%~ad.dll" "%~dp0\debug"
)
那么我能否以某种方式避免在批处理中输入完整路径(例如 qtbase\bin\Qt5CLucene
)?
如果我没理解错的话,您想将所有 *.dll 文件从 C:\Qt.3.0-64\ 文件夹及其子文件夹复制到脚本文件文件夹的调试子文件夹中。
您可以尝试这样的操作:
:: Start of your *.bat or *.cmd file
FOR /R C:\Qt.3.0-64\ %%a IN (*.dll) DO (
xcopy "%%~a" "%dp~0debug\"
)
:: End of your *.bat or *.cmd file
像这样尝试(xcopy 可能会询问您是否要创建目录 - 而是使用复制):
For /r "C:\Qt.3.0-64\" %%a in (
"*Qt5CLucene.dll"
"*Qt5Core.dll"
"*Qt5Gui.dll"
"*Qt5Help.dll"
"*Qt5Multimedia.dll"
"*Qt5Network.dll"
"*Qt5PrintSupport.dll"
"*Qt5Sql.dll"
"*Qt5Svg.dll"
"*Qt5Widgets.dll"
"*Qt5Xml.dll"
"*Qt5XmlPatterns.dll"
) do (
copy /y "%~fa" "%~dp0\debug"
)
xcopy
支持 *
通配符,甚至允许您克隆整个目录结构。我的项目使用了这些我需要分发的 Qt 库:
Qt5CLucene.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Help.dll
Qt5Multimedia.dll
Qt5Network.dll
Qt5PrintSupport.dll
Qt5Sql.dll
Qt5Svg.dll
Qt5Widgets.dll
Qt5Xml.dll
Qt5XmlPatterns.dll
它们并不都在 Qt 安装的同一个目录中,并且列表可能会更改 - 特别是添加内容。所以我想使用通配符 /*/
在目录树中的任何位置查找文件:
C:\Qt.3.0-64> xcopy ".\*\%NAME%.dll" "%~dp0\release"
它不起作用,找不到文件。这是完整的代码:
C:
cd C:\Qt.3.0-64\
For %%a in (
"Qt5CLucene"
"Qt5Core"
"Qt5Gui"
"Qt5Help"
"Qt5Multimedia"
"Qt5Network"
"Qt5PrintSupport"
"Qt5Sql"
"Qt5Svg"
"Qt5Widgets"
"Qt5Xml"
"Qt5XmlPatterns"
) do (
xcopy ".\**\%%~ad.dll" "%~dp0\debug"
)
那么我能否以某种方式避免在批处理中输入完整路径(例如 qtbase\bin\Qt5CLucene
)?
如果我没理解错的话,您想将所有 *.dll 文件从 C:\Qt.3.0-64\ 文件夹及其子文件夹复制到脚本文件文件夹的调试子文件夹中。
您可以尝试这样的操作:
:: Start of your *.bat or *.cmd file
FOR /R C:\Qt.3.0-64\ %%a IN (*.dll) DO (
xcopy "%%~a" "%dp~0debug\"
)
:: End of your *.bat or *.cmd file
像这样尝试(xcopy 可能会询问您是否要创建目录 - 而是使用复制):
For /r "C:\Qt.3.0-64\" %%a in (
"*Qt5CLucene.dll"
"*Qt5Core.dll"
"*Qt5Gui.dll"
"*Qt5Help.dll"
"*Qt5Multimedia.dll"
"*Qt5Network.dll"
"*Qt5PrintSupport.dll"
"*Qt5Sql.dll"
"*Qt5Svg.dll"
"*Qt5Widgets.dll"
"*Qt5Xml.dll"
"*Qt5XmlPatterns.dll"
) do (
copy /y "%~fa" "%~dp0\debug"
)