我有一个包含各种子文件夹的大文件夹,每个子文件夹包含多个jpg / jpeg文件。例如,
0 e:\..jpg
1 e:\front.jpg
2 e:\back.jpg
3 e:\10_40\apopfront.jpg
4 e:\Dominatrix\Dominatrix.jpg
5 e:\# Herr Fuchs & Frau Elster\Feel Musik 8.jpg
6 e:\# Herr Fuchs & Frau Elster\Immer für Immer.jpg
7 e:\# Herr Fuchs & Frau Elster\Märchentanz - Liebe und Strand.jpg
8 e:\# Herr Fuchs & Frau Elster\# Herr Fuchs & Frau Elster.jpg
我正在寻找一个Windows批处理脚本来识别那些
的jpg文件我认为找到了前两个条件的正确解决方案(将目录绘制到批处理脚本中):
set Exts="*front*.jpg","*front*.jpeg","*..jpg","*..jpeg" for /r . %%g in (%Exts%) do ...
但我没有解决方案也将第三个条件实现到该循环中。有一个简单的方法吗?任何帮助表示赞赏。 感谢。
答案 0 :(得分:0)
@echo off
set "ndir=%CD%
setlocal enableDelayedExpansion
for %%a in (*.jpg) do (
set "filename=%%~nxF"
echo !filename!|findstr /c:"front" >nul
if "%errorlevel%" == "0" echo found file: !!a
echo !filename!|findstr /c:"..jpg" >nul
if "%errorlevel%" == "0" echo found file: !!a
set "filename:-4"
cd ..\
cd %CD%\!filename!
if "%errorlevel%" == "0" echo found file: !!a
cd !ndir!
set "filename:-1"
cd ..\
cd %CD%!filename!
if %%errorlevek%" == "0" echo found file: !!a
pause >nul
不知道它是否有效。
答案 1 :(得分:0)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
FOR /f "tokens=1*delims=" %%a IN (
'dir /b /s /ad "%sourcedir%\*" '
) DO (
IF EXIST "%%a\%%~nxa.jpg" ECHO found "%%a\%%~nxa.jpg"
)
GOTO :EOF
这对我说明了两个文件。正如预期的那样,它检测到但是非ANSI文件名受损。
答案 2 :(得分:0)
项目 1 的模式*..jpg
和*..jpeg
匹配名称可能包含..
之前的内容的文件,这不是您想要的,只要我明白。我会改为使用单一模式..jp??
。
类似地,我也会使用一种模式*front*.jp??
来涵盖项目 2 。
所以为了涵盖 1 和 2 项目,我会使用:
for /R "E:\" %%G in ("*front*.jp??","..jp??") do echo %%~G
对于 3 项,您可以使用以下内容:
for /R "E:\" %%G in ("*.jp??") do (
for %%H in ("%%~dpG.") do (
if "%%~nxH"=="%%~nG" echo %%~G
)
)