[英]Windows batch file error passing variable (.bat)
我試圖遞歸遍歷文件夾內的所有文件。 我需要讀取文件名,abcd_somethingone_pqrs.csv是文件名模式。 我需要創建一個名為“ oneone”的文件夾(如果該文件夾不存在),然后將文件移動到該文件夾中。 我已經開始在.bat中編寫以下代碼。
FOR /R D:\MOE\MRs\batchfiles\01\ %%F in (*.*) do (
echo %%~nF
set newloc=%%~nF
echo %newloc%
)
第1行正確打印了文件夾中的文件名。 但是,當我將其讀取到新變量newloc時,第4行始終僅輸出最后一個文件的名稱。 任何人都可以請您了解這里出了什么問題或向我提出一種解決方法。
編輯:完全改變了我的答案,實際上試圖完全解決您的總體問題,而不僅僅是您堅持的事情。
您必須將target_dir更新到您想要文件放到的任何位置。
@echo off
setlocal enabledelayedexpansion
set source_dir=D:\MOE\MRs\batchfiles\01\
set target_dir=D:\something\
:: Recursively search the source directory for files
for %%A in (somethingone somethingtwo somethingthree) do (
for /F "delims=" %%B in ('dir /a:-d /s /b %source_dir%*%%A*') do (
REM if the directory does not exist, make it
if not exist %target_dir%%%A mkdir %target_dir%%%A
move %%B %target_dir%%%A
)
)
for
循環內的變量值可以正確傳播。
setlocal enabledelayedexpansion for /RD:\\MOE\\MRs\\batchfiles\\01\\ %%F in (*.*) do ( echo %%~nF set newloc=%%~nF echo !newloc! )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.