我是一个完整的脚本新手。我想知道是否有人会帮我创建一个脚本。我正在寻找的脚本是一个批处理文件来执行查找和移动过程。该查找将在dicom文件上搜索文本字符串(示例患者ID)。此外,查找还需要在子文件夹中搜索。此外,查找的文件扩展名为.dcm或.raw。完成查找后,找到包含文本字符串的文件。我希望脚本然后将找到的文件复制到桌面。任何有关这方面的帮助将不胜感激。
答案 0 :(得分:3)
setlocal enabledelayedexpansion
for /r C:\folder %%a in (*.dcm *.raw) do (
find "yourstring" "%%a"
if !errorlevel!==0 copy "%%a" "%homepath%\Desktop" /y
)
答案 1 :(得分:1)
这应该为你做。要在命令行中查看每个命令类型command /?
可用的所有选项。
echo /?
for /?
find /?
xcopy /?
findstr /?
...
方法1 :(推荐)
:: No delayed expansion needed.
:: Hide command output.
@echo off
:: Set the active directory; where to start the search.
cd "C:\Root"
:: Loop recusively listing only dcm and raw files.
for /r %%A in (*.dcm *.raw) do call :FindMoveTo "patient id" "%%~dpnA" "%UserProfile%\Desktop"
:: Pause the script to review the results.
pause
goto End
:FindMoveTo <Term> <File> <Target>
:: Look for the search term inside the current file. /i means case insensitive.
find /c /i "%~1" "%~2" > nul
:: Copy the file since it contains the search term to the Target directory.
if %ErrorLevel% EQU 0 xcopy "%~2" "%~3\" /c /i /y
goto :eof
:End
方法2 :(由于FINDSTR /s
bug而不推荐)
@echo off
for /f "usebackq delims=" %%A in (`findstr /s /i /m /c:"patient id" *.dcm`) do xcopy "%%~dpnA" "%UserProfile%\Desktop\" /c /i /y
for /f "usebackq delims=" %%A in (`findstr /s /i /m /c:"patient id" *.raw`) do xcopy "%%~dpnA" "%UserProfile%\Desktop\" /c /i /y
pause