[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]求修改过滤文件夹的批处理 谢谢版主Batcher和miqilaosu

本帖最后由 smss 于 2019-6-21 14:47 编辑

@echo off
setlocal enabledelayedexpansion
cd %1
set k=*.jpg *.png
for /f "delims=" %%i in ('dir /b /ad /a-h /s .\%k%') do (set "file=%%~nxi"
if "!file:~-6!" neq ".9.png" (%~dp0cwebp.exe -q 100 "%%i" -o "%%~dpi%%~ni.webp"&del "%%i"&cd %%~dpi&ren "%%~ni.webp" "%%~nxi"&attrib "%%~nxi" +h)
)1>nul 2>nul
::处理lockscreen文件
if exist %1\lockscreen\advance (xcopy /e /i /y  %1\lockscreen\advance %~dp0advance
copy %1\lockscreen\advance\manifest.xml %~dp0
cd /d "%~dp0"
PowerShell -exec ByPass "&'%~dp01.ps1'" "%~f1\lockscreen\advance"
::call 1.bat
move %~dp0\1.xml %1\lockscreen\advance\manifest.xml
for /f "delims=" %%i in ('dir /b /ad /a-h /s %1\lockscreen\advance\*') do (attrib "%%i" +h)
)>nul
pause

如上红色部分 希望的结果是循环至%1\lockscreen目录时不执行红色代码(即不加隐藏属性)怎样过滤文件夹lockscreen

回复 12# Batcher 回复 13# miqilaosu
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd %1
  4. for /f "delims=" %%i in ('dir /b /ad /a-h /s .\*.jpg *.png') do (set "file=%%~nxi"
  5. if "!file:~-6!" neq ".9.png" (%~dp0cwebp.exe -q 100 "%%i" -o "%%~dpi%%~ni.webp" 1>nul 2>nul&del "%%i"&cd %%~dpi&ren "%%~ni.webp" "%%~nxi"
  6. echo %%~dpi | findstr "\lockscreen\advance \clock_2x4 \miwallpaper" >nul 2>&1
  7. if errorlevel 1 (attrib "%%~nxi" +h)
  8. ))
  9. pause
复制代码
OK啦 谢谢版主Batcher和miqilaosu

TOP

本帖最后由 miqilaosu 于 2019-6-21 14:39 编辑

回复 11# smss
  1. %1\lockscreen\advance
复制代码
最后不用杠,或者把最后的杠换成两个杠,\"直接在findstr 里用会被注释掉,所以查不到
  1. echo.%%~dpi | findstr \lockscreen\advance\ >nul 2>&1
复制代码
反正没空格,这么写好像也可以

TOP

回复 11# smss


    我可能还是没能理解你的需求,请把当前的目录结构和你想实现的功能描述一下吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# Batcher 不行%%~dpi 含所有处理图片所在路径 传给| findstr "\lockscreen\advance\" >nul 2>&1 起不到过滤作用

TOP

回复 3# smss
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /ad /a-h /s .\%k%') do (
  3.     set "file=%%~nxi"
  4.     if "!file:~-6!" neq ".9.png" (
  5.         %~dp0cwebp.exe -q 100 "%%i" -o "%%~dpi%%~ni.webp" 1>nul 2>nul
  6.         del "%%i"
  7.         cd %%~dpi
  8.         ren "%%~ni.webp" "%%~nxi"
  9.         REM 这样判断可以吗
  10.         echo %%~dpi | findstr "\lockscreen\advance\" >nul 2>&1
  11.         if errorlevel 1 (
  12.             if not "%%~dpi" == "%1\clock_2x4\" (
  13.                 if not "%%~dpi" == "%1\miwallpaper\" (
  14.                     attrib "%%~nxi" +h
  15.                 )
  16.                 echo %%~dpi
  17.             )
  18.         )
  19.     )
  20. )
  21. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# miqilaosu
要的就是隐藏 要的就是隐藏 要的就是隐藏

TOP

回复 7# smss


    我说的是电脑默认设置,一般电脑都是隐藏文件不可见的,我也是运行你的BAT后,发现测试目录的文件都没了,才自己调成可见的,如果是给客户用的话,就需要给客户电脑也设置成可见,除非这个文件转完格式不去用了

TOP

回复 6# miqilaosu
要得就是隐藏处理效果 其中%1是获取相对路径 如果别人电脑不能运行 则说明代码写的不对导致的不兼容 是自身问题

TOP

本帖最后由 miqilaosu 于 2019-6-21 14:19 编辑
  1. for /f "delims=" %%i in ('dir /b /ad /a-h /s .\%k%') do (set "file=%%~nxi"&set smss=2
  2. if "!file:~-6!" neq ".9.png" (%~dp0cwebp.exe -q 100 "%%i" -o "%%~dpi%%~ni.webp"1>nul 2>nul&del "%%i"&cd %%~dpi&ren "%%~ni.webp" "%%~nxi"
  3. echo "%%~dpi"|findstr /i "%1\lockscreen\advance\\" >nul 2>nul&&set "smss="
  4. if defined smss (
  5. if not "%%~dpi" == "%1\clock_2x4\" (if not "%%~dpi" == "%1\miwallpaper\" (attrib "%%~nxi" +h))
  6. echo %%~dpi
  7. )
  8. ))
  9. pause
复制代码
还不如把操作过的都放记事本里呢,判断来判断去,感觉发蒙,而且隐藏文件这种你自己电脑上用行,如果是给别人用还弄隐文件,估计一运行发现图片全没了

TOP

回复 4# Batcher
这样肯定不行lockscreen中的图片需要处理成.webp

TOP

for /f "delims=" %%i in ('dir /b /ad /a-h /s .\%k% ^| findstr /v "%1\lockscreen\advance\"') do (
这这里过滤可以吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 smss 于 2019-6-21 12:31 编辑

回复 2# Batcher
是的 不过想反了 是if not "%%~dpi" neq "%1\lockscreen\advance\" 则不执行(attrib "%%~nxi" +h)
  1. for /f "delims=" %%i in ('dir /b /ad /a-h /s .\%k%') do (set "file=%%~nxi"
  2. if "!file:~-6!" neq ".9.png" (%~dp0cwebp.exe -q 100 "%%i" -o "%%~dpi%%~ni.webp"1>nul 2>nul&del "%%i"&cd %%~dpi&ren "%%~ni.webp" "%%~nxi"
  3. if not "%%~dpi" == "%1\lockscreen\advance\" (if not "%%~dpi" == "%1\clock_2x4\" (if not "%%~dpi" == "%1\miwallpaper\" (attrib "%%~nxi" +h)
  4. echo %%~dpi
  5. ))))
  6. pause
复制代码
改成以上 只能过滤掉 %1\lockscreen\advance\ 过滤不掉其下的子目录中的文件 例如%1\lockscreen\advance\1\下有图片1.png 用%1\lockscreen\advance\扩充不到 便过滤不掉

希望的结果是%%~dpi 路径中含有%1\lockscreen\advance\ 便过滤掉 改了好几遍还不可以 其中if not "%%~dpi" == "%%~dpa" 也不知道是哪错了 为什么不可以呢???
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd %1
  4. for /f "delims=" %%i in ('dir /b /ad /a-h /s *.jpg *.png') do (set "file=%%~nxi"
  5. if "!file:~-6!" neq ".9.png" (%~dp0cwebp.exe -q 100 "%%i" -o "%%~dpi%%~ni.webp"1>nul 2>nul&del "%%i"&cd %%~dpi&ren "%%~ni.webp" "%%~nxi"
  6. for /f "delims=" %%a in ('dir /b /ad /a-h /s %1\lockscreen\advance\*.jpg *.png') do (
  7. if not "%%~dpi" == "%%~dpa" (if not "%%~dpi" == "%1\clock_2x4\" (if not "%%~dpi" == "%1\miwallpaper\" (attrib "%%~nxi" +h)
  8. echo %%~dpi
  9. echo %%~dpa
  10. echo.
  11. )))))
  12. pause
复制代码

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd %1
  4. set k=*.jpg *.png
  5. for /f "delims=" %%i in ('dir /b /ad /a-h /s .\%k%') do (
  6.     set "file=%%~nxi"
  7.     if "!file:~-6!" neq ".9.png" (
  8.         %~dp0cwebp.exe -q 100 "%%i" -o "%%~dpi%%~ni.webp"
  9.         del "%%i"
  10.         cd %%~dpi
  11.         ren "%%~ni.webp" "%%~nxi"
  12.         REM 在这里做判断符合要求吗?
  13.         if "%%~nxi" neq "lockscreen" (
  14.             attrib "%%~nxi" +h
  15.         )
  16.     )
  17. )1>nul 2>nul
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表