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