當我不知道完整路徑時將檔案複製到目錄

當我不知道完整路徑時將檔案複製到目錄

我有一個應用程序,在打開時會產生一個目錄,其中包含一些文件。我想訪問此目錄中的一些文件以匯出它們並將其導入到此目錄中。目錄結構如下圖所示:

+ 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 語句、正規表示式和字串命令的選項適合您。

答案2

經過更多的思考和測試,我找到了解決方案。

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

for命令仍然只查看我知道的資料夾中的每個文件,包括我不知道的子目錄。然後,它使用備份檔案的網路路徑執行 xcopy。%~nf末尾附加的 可以從 for 指令取得目前檔案的檔案名稱。然後,它使用%~pf從 for 命令獲取當前檔案的路徑將其複製到本機資料夾。

相關內容