我有許多具有相同命名方案的文件。作爲示例,四個文件被稱爲「num_001_001.txt」,「num_002_001.txt」,「num_002_002.txt」,「num_002_003.txt」windows批處理文件:for循環中的設置變量
第一組數字表示來自哪個「包」第二組數字僅用於區分它們。所以在這個例子中,我們在包001中有一個文件,在包00中有三個文件。
我正在編寫一個windows vista批處理命令來獲取所有文件並將它們移動到它們自己的目錄中,其中每個目錄代表不同的包。所以我想將包001的所有文件移動到目錄「001」,並將002的所有文件移動到目錄「002」中
我已經成功編寫了一個腳本,它將迭代所有txt文件並對其進行回顯。我還寫了一個腳本,將一個文件移動到另一個位置,並創建該目錄(如果該目錄不存在)。
現在我認爲我需要使用子字符串,所以我使用%var:〜start,end%語法來獲取它們。作爲測試,我寫了這個驗證我其實可以提取串並創建一個目錄有條件
@echo off set temp=num_001_001.txt NOT IF exist %temp:~0,7%\ mkdir %temp:~0,7%
和它的作品。大。
然後我添加了for循環。
@echo off FOR /R %%X IN (*.txt) DO ( set temp=%%~nX echo directory %temp:~0,7% )
但是,這是我的輸出:
directory num_002 directory num_002 directory num_002 directory num_002
有什麼不對? vista是否不支持在每次迭代中重新分配變量? 這四個文件位於我的目錄中,其中一個應創建num_001。我把003 004 005放在不同的文件中,全部都是最後一個包的名字。我猜測我的設置方式有問題。
我有不同的解決方法來完成工作,但我很困惑爲什麼這樣一個簡單的概念不會工作。
可能重複的[在for循環中初始化批處理文件變量](https://stackoverflow.com/questions/691047/batch-file-variables-initialized-in-a-for-loop) – 2017-11-09 12:16:01