findstr
你的路徑包含空格。您在move
命令中正確地引用了它們,但在findstr
命令中沒有正確引用它們。如果沒有引號,則找不到要搜索的路徑,因此無法找到文件。
如果要處理髮現包含該字符串的文件列表,則需要向findstr
指示不希望找到文本,只能找到文本名稱所在的文件名。在findstr
中使用的開關包括/M
另外,取決於字符串的內容,findstr
將不會像您所期望的那樣工作。某些字符會將搜索字符串處理爲正則表達式或將其分割爲空格。指出搜索是什麼更好。
因此,findstr
應該是這個樣子
findstr /s /m /l /c:"@B-ADD|496|" "C:\Users\william\Desktop\New Folder\*.txt"
子目錄中搜索(/s
)只返回文件名(/m
)的文字(/l
但在這種情況下,可以爲/c
意味着默認的字符串被忽略文字)所指示的字符串(/c:"....."
)
for /f
隨着findstr
命令更正,您將檢索將由for /f
迭代的匹配文件列表。如果您只想移動僅限於這些找到的文件,則在move
命令的源文件中包含完整路徑和通配符是沒有意義的。您應該使用源"%%~fA"
來檢索for
可替換參數(您的代碼中爲%%A
)引用的元素的完整路徑,即找到的文件的完整路徑。
@echo off
setlocal enableextensions disabledelayedexpansion
set "source=C:\Users\wee-liem.wong\Desktop\NewFolder"
set "target=C:\Users\william\Desktop\NewFolder(2)"
if not exist "%target%\" md "%target%\"
for /f "delims=" %%A in ('
findstr /s /m /l /c:"@B-ADD|496|" "%source%\*.txt"
') do move /y "%%~fA" "%target%"
您正在搜索什麼字符串?路徑或文件名或文件內容?請澄清! – aschipfl
在txt文件中搜索字符串。路徑:C:\ Users \ william \ Desktop \ NewFolder \;子文件夾:C:\ Users \ william \ Desktop \ NewFolder \ test \ – william123456
請通過編輯帖子將此信息添加到您的問題中......謝謝! – aschipfl