簡體   English   中英

Windows批處理文件錯誤傳遞變量(.bat)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM