无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 1069|回复: 22
打印 上一主题 下一主题

[已解决] 【已解决】这里的 if "%~f1"=="" 是什么意思?谢谢

[复制链接]
跳转到指定楼层
1#
发表于 2024-2-25 11:27:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyz2191958 于 2024-2-25 14:38 编辑

问题解决了:


拖放就相当于命令行里命令之后的第一个参数,即%1
比如你将一个文件或目录拖放到批处理图标上,这个文件或目录就会被批处理识别为%1来操作
这一句中,%~f1 就是%1的全路径
意思就是如果%1路径为空就提示  ========= 【将*.webp】 拖拽到 【批处理图标】 ========
并到:m段执行

如果%1路径不为空,后面的代码就是转到%1路径,并设置窗口宽高及颜色
所以有拖放就到绿色窗口,没有拖放就出现黑色窗口提示=====================================
===============================================================
原来的问题:
webp-转-png-JPG格式(拖).bat:
@echo off
echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo. %【留下 10个 空行】%
if "%~f1"=="" echo.              ========= 【将*.webp】 拖拽到 【批处理图标】 ======== & goto :m
::=======================================================
cd /d "%~dp1"
::界面大小,Cols为宽,Lines为高
mode con cols=15 lines=7
color 2F
:menu
cls
ECHO.
ECHO  1:转为 PNG
ECHO  2:转为 JPG
ECHO.
set /p a=.▼.选择数字
cls
if %a%==1 goto :PNG
if %a%==2 goto :JPG
:PNG
for %%i in (*.webp) do %~dp0ffmpeg.exe -i "%%i" "%%~ni.png" -y
goto :menu
:JPG
for %%i in (*.webp) do %~dp0ffmpeg.exe -i "%%i" "%%~ni.jpg" -y
goto :menu
::=======================================================
:m
pause>nul 2>nul
exit


3.png (91.14 KB, 下载次数: 9)

3.png
2#
发表于 2024-2-25 11:36:55 | 只看该作者
%~fI        - 将 %I 扩展到一个完全合格的路径名

%~f1 表示批处理附带的第一个 参数 所包含的内容 转化成一个完整的文件路径

评分

参与人数 1无忧币 +3 收起 理由
yyz2191958 + 3 谢谢!我需要慢慢琢磨

查看全部评分

回复

使用道具 举报

3#
 楼主| 发表于 2024-2-25 11:38:58 | 只看该作者
dos时代菜鸟 发表于 2024-2-25 11:36
%~fI        - 将 %I 扩展到一个完全合格的路径名

%~f1 表示批处理附带的第一个 参数 所包含的内容 转化 ...

谢谢!我需要慢慢琢磨
回复

使用道具 举报

4#
 楼主| 发表于 2024-2-25 11:43:31 | 只看该作者
dos时代菜鸟 发表于 2024-2-25 11:36
%~fI        - 将 %I 扩展到一个完全合格的路径名

%~f1 表示批处理附带的第一个 参数 所包含的内容 转化 ...

%~f1下一行的:cd /d "%~dp1"————算不算第一个 参数 ?谢谢
回复

使用道具 举报

5#
 楼主| 发表于 2024-2-25 11:55:19 | 只看该作者
为什么拖拽的时候,能够跳过:第一、二行  代码?
回复

使用道具 举报

6#
发表于 2024-2-25 11:59:02 来自手机 | 只看该作者
如果为空说明没拖

评分

参与人数 1无忧币 +3 收起 理由
yyz2191958 + 3 %~f1 用来判断有没有拖?

查看全部评分

回复

使用道具 举报

7#
 楼主| 发表于 2024-2-25 12:12:52 | 只看该作者
szwp 发表于 2024-2-25 11:59
如果为空说明没拖

%~f1——————用来判断有没有拖?

点评

如果不知道"%~f1"什么意思,可以用echo "%~f1" &pause 来观察,加在if前。  详情 回复 发表于 2024-2-26 09:05
回复

使用道具 举报

8#
发表于 2024-2-25 12:19:08 | 只看该作者
yyz2191958 发表于 2024-2-25 11:55
为什么拖拽的时候,能够跳过:第一、二行  代码?

压根就没跳过第一二代码,只是你没肉眼看见而已,十个空行被下面的cls命令清除,if判断不等于空后直接转到下一个命令行cd/d。。。。

评分

参与人数 1无忧币 +3 收起 理由
yyz2191958 + 3 原来是这样,谢谢

查看全部评分

回复

使用道具 举报

9#
 楼主| 发表于 2024-2-25 12:21:12 | 只看该作者
zlq_hysy 发表于 2024-2-25 12:19
压根就没跳过第一二代码,只是你没肉眼看见而已,十个空行被下面的cls命令清除,if判断不等于空后直接转 ...

原来是这样,谢谢
回复

使用道具 举报

10#
 楼主| 发表于 2024-2-25 12:24:49 | 只看该作者
zlq_hysy 发表于 2024-2-25 12:19
压根就没跳过第一二代码,只是你没肉眼看见而已,十个空行被下面的cls命令清除,if判断不等于空后直接转 ...

不对呀!
::cls——————注释了,也是一样跳过黑窗口
回复

使用道具 举报

11#
发表于 2024-2-25 12:31:05 | 只看该作者
本帖最后由 hilsonma 于 2024-2-25 12:32 编辑

拖放就相当于命令行里命令之后的第一个参数,即%1
比如你将一个文件或目录拖放到批处理图标上,这个文件或目录就会被批处理识别为%1来操作
  1. if "%~f1"=="" echo.              ========= 【将*.webp】 拖拽到 【批处理图标】 ======== & goto :m
复制代码

这一句中,%~f1 就是%1的全路径
意思就是如果%1路径为空就提示  ========= 【将*.webp】 拖拽到 【批处理图标】 ========
并到:m段执行

如果%1路径不为空后面的代码就是转到%1路径,并设置窗口宽高及颜色

所以有拖放就到绿色窗口,没有拖放就出现黑色窗口提示

我通常直接使用 if %1.==. 来判断有没有拖放
由于拖放的文件或目录有可能含有空格,所以最好还是使用 if "%1"=="" 来判断有没有拖放

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5 很给力!

查看全部评分

回复

使用道具 举报

12#
 楼主| 发表于 2024-2-25 12:33:10 | 只看该作者
hilsonma 发表于 2024-2-25 12:31
拖放就相当于命令行里命令之后的第一个参数,即%1
比如你将一个文件或目录拖放到批处理图标上,这个文件或 ...

很给力!
回复

使用道具 举报

13#
发表于 2024-2-25 12:56:28 | 只看该作者
vhd文件可以直接双击挂载,但右键点弹出后其实并没有完全卸载,所以我做了一个批处理来卸载
现附上内容给楼主参考
  1. @echo off
  2. title vhd分离
  3. if %1.==. (echo.&set /p vhd1=请将要分离的vhd文件拖放到本窗口后按回车键:) else set vhd1=%1
  4. cmd /c "echo SELECT VDISK FILE=%vhd1% & echo DETACH VDISK"|diskpart.exe
复制代码

评分

参与人数 1无忧币 +3 收起 理由
yyz2191958 + 3 赞一个!

查看全部评分

回复

使用道具 举报

14#
 楼主| 发表于 2024-2-25 13:00:41 | 只看该作者
hilsonma 发表于 2024-2-25 12:31
拖放就相当于命令行里命令之后的第一个参数,即%1
比如你将一个文件或目录拖放到批处理图标上,这个文件或 ...

结果实验:
if "%1"==""————目录没有空格的时候正常。有空格的时候,拖到没有反应
if %1==""—————目录有没有空格都正常
回复

使用道具 举报

15#
发表于 2024-2-25 13:06:03 | 只看该作者
yyz2191958 发表于 2024-2-25 13:00
结果实验:
if "%1"==""————目录没有空格的时候正常。有空格的时候,拖到没有反应
if %1==""——— ...

那你试 if %1.==.
这是我一直使用的

有没有空格,有没有拖放,都试一下
回复

使用道具 举报

16#
发表于 2024-2-25 13:09:51 | 只看该作者
你正在学习兴头上,所以辛苦你测试一下,我那个劲过去了,懒得折腾了
回复

使用道具 举报

17#
 楼主| 发表于 2024-2-25 13:12:24 | 只看该作者
hilsonma 发表于 2024-2-25 12:56
vhd文件可以直接双击挂载,但右键点弹出后其实并没有完全卸载,所以我做了一个批处理来卸载
现附上内容给 ...

        赞一个!
回复

使用道具 举报

18#
发表于 2024-2-25 13:59:35 | 只看该作者
yyz2191958 发表于 2024-2-25 12:24
不对呀!
::cls——————注释了,也是一样跳过黑窗口

也可能设置颜色后内部初始化了,不知道呀。老弟,加油!
回复

使用道具 举报

19#
发表于 2024-2-26 09:05:53 | 只看该作者
yyz2191958 发表于 2024-2-25 12:12
%~f1——————用来判断有没有拖?

如果不知道"%~f1"什么意思,可以用echo "%~f1" &pause 来观察,加在if前。

点评

赞一个!  详情 回复 发表于 2024-2-26 10:36

评分

参与人数 1无忧币 +3 收起 理由
yyz2191958 + 3 赞一个!

查看全部评分

回复

使用道具 举报

20#
 楼主| 发表于 2024-2-26 10:36:09 | 只看该作者
szwp 发表于 2024-2-26 09:05
如果不知道"%~f1"什么意思,可以用echo "%~f1" &pause 来观察,加在if前。

        赞一个!

点评

还可用title "%~f1"也能看到  详情 回复 发表于 2024-2-26 10:46
回复

使用道具 举报

21#
发表于 2024-2-26 10:46:42 | 只看该作者

还可用title "%~f1"也能看到

点评

谢谢  详情 回复 发表于 2024-2-26 11:09
回复

使用道具 举报

22#
 楼主| 发表于 2024-2-26 11:09:22 | 只看该作者
szwp 发表于 2024-2-26 10:46
还可用title "%~f1"也能看到

谢谢
回复

使用道具 举报

23#
发表于 2024-2-26 13:08:03 | 只看该作者
可以拖一个 名称 含与不含 空格 的文件或目录 看看区别;
拖文件或右键传入的情形,本人倾向于使用:set "a=%~1"

@echo off
set "a=%~1"
set b=%~1
set "c=%1"
set d=%1
echo.
echo 设置变量a用引号的(%%~1): %a%
echo.
echo 设置变量b不用引号的(%%~1): %b%
echo.
echo 设置变量c用引号的(%%1): %c%
echo.
echo 设置变量d不用引号的(%%1): %d%
pause >nul

评分

参与人数 1无忧币 +3 收起 理由
yyz2191958 + 3 赞一个!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-28 06:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表