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

[文件操作] [已解决]求修改批处理IF这样写为什么获取不到

  1. @echo off
  2. @(for %%i in (%*) do (
  3. if "%%~xi"==".gif" (set Y=gif2webp.exe) else (set Y=cwebp.exe)
  4. echo  %Y%
  5. echo  %%~xi
  6. %~dp0%Y% -q 100 %%i -o "%~dp1%%~ni.webp"1>nul 2>nul)
  7. )&echo        处理完毕!即将关闭!
  8. pause
复制代码
想通过if判断后缀如是.gif则Y=gif2webp.exe
if "%%~xi"==".gif" (set Y=gif2webp.exe) else (set Y=cwebp.exe)
echo  %Y% 获取不到
echo  %%~xi 可以正常获取

本帖最后由 smss 于 2019-6-18 15:09 编辑

回复 2# miqilaosu
谢谢
for %%i in (%*) 用来拖拽获取路径
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. @(for %%i in (%*) do (
  4. if "%%~xi"==".gif" (set Y=gif2webp.exe) else (set Y=cwebp.exe)
  5. %~dp0!Y! -q 100 %%i -o "%~dp1%%~ni.webp"1>nul 2>nul)
  6. )&echo        处理完毕!即将关闭!
  7. pause
复制代码
1加延迟
2%Y%换成!Y!

TOP

本帖最后由 miqilaosu 于 2019-6-18 13:19 编辑

回复 1# smss


    for %%i in (%*),这个%*,你是要干嘛的
你要做的是什么操作 如果是只对GIF操作的话 for /f %%i in ('dir /a-d/b /s "*.gif"') do  就可以了啊
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. @(for /f "delims=*" %%i in ('dir /a-d /b /s *.gif,*.png,*.jpg') do (
  4. if "%%~xi"==".gif" (set Y=gif2webp.exe) else (set Y=cwebp.exe)
  5. echo,!Y!
  6. echo,%%~xi
  7. %~dp0%Y% -q 100 %%i -o "%~dp1%%~ni.webp"1>nul 2>nul
  8. )
  9. )&&echo        处理完毕!即将关闭!
  10. pause
复制代码
估计你IF里的格式有误吧 我完全重敲了一次就好了

TOP

返回列表