当我不知道完整路径时将文件复制到目录

当我不知道完整路径时将文件复制到目录

我有一个应用程序,打开后会生成一个包含一些文件的目录。我想访问此目录中的一些文件以将其导出并导入到此目录中。目录结构如下所示:

+ Folder I know
   + Auto Generated Folder         'Name changes every time
      -SomeFile
      -SomeFile2
      +macro
         -macro1
         -macro2
         -macro3

我只想处理“宏”子目录下的文件。我有一个有效的导出解决方案,使用“for”命令查看“我知道的文件夹”并进行匹配:

 for /R "C:\Folder I know\" %f in ("macro*") do @xcopy "%f" "destination path" /u /y

xcopy 命令中的 /u 开关甚至允许我仅更新目标中已存在的文件。现在的问题是,我如何反向执行相同的操作?我想从文件夹(例如 c:\temp)复制文件,并且仅在宏文件夹中已存在文件时才更新它们。

答案1

我不太确定我是否完全理解了您要做什么,但似乎%CD%环境变量可能会有用。此变量跟踪当前工作目录,包括驱动器号和完整路径。以下是其实际运行的屏幕截图。

在此处输入图片描述

知道该变量后,您可以在脚本中使用它,只要您认为它有用即可。在您的特定情况下,似乎每次生成脚本时,您都必须将其复制到宏文件夹中,然后从那里运行它。

编写可在外部运行的脚本的唯一方法是,如果您可以掌握程序创建的任何变量来自动生成一个文件夹名称。或者,如果自动生成的文件夹名称遵循某种可以匹配模式的约定,那么可能有一些涉及 IF 语句、RegEx 和字符串命令的选项可以为您工作。

答案2

经过进一步的思考和测试,我找到了解决方案。

FOR /R "C:\Folder I know\" %f IN ("*") DO @xcopy "network path\%~nf" "%~pf" /e /u /y

for 命令仍然只查看我知道的文件夹中的每个文件,包括我不知道的子目录。然后它使用文件备份的网络路径执行 xcopy。附加到末尾的从 for 命令获取当前文件的文件名。然后它使用从 for 命令获取当前文件路径的将其%~nf复制到本地文件夹。%~pf

相关内容