无忧启动论坛

 找回密码
 注册
搜索

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

查看数: 2543 | 评论数: 22 | 收藏 3
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-2-25 11:27

正文摘要:

本帖最后由 yyz2191958 于 2024-2-25 14:38 编辑 问题解决了: 拖放就相当于命令行里命令之后的第一个参数,即%1 比如你将一个文件或目录拖放到批处理图标上,这个文件或目录就会被批处理识别为%1来操作 ...

回复

captain_g 发表于 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 赞一个!

查看全部评分

yyz2191958 发表于 2024-2-26 11:09:22
szwp 发表于 2024-2-26 10:46
还可用title "%~f1"也能看到

谢谢
szwp 发表于 2024-2-26 10:46:42

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

点评

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

        赞一个!

点评

还可用title "%~f1"也能看到  详情 回复 发表于 2024-2-26 10:46
szwp 发表于 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 赞一个!

查看全部评分

zlq_hysy 发表于 2024-2-25 13:59:35
yyz2191958 发表于 2024-2-25 12:24
不对呀!
::cls——————注释了,也是一样跳过黑窗口

也可能设置颜色后内部初始化了,不知道呀。老弟,加油!
yyz2191958 发表于 2024-2-25 13:12:24
hilsonma 发表于 2024-2-25 12:56
vhd文件可以直接双击挂载,但右键点弹出后其实并没有完全卸载,所以我做了一个批处理来卸载
现附上内容给 ...

        赞一个!
hilsonma 发表于 2024-2-25 13:09:51
你正在学习兴头上,所以辛苦你测试一下,我那个劲过去了,懒得折腾了
hilsonma 发表于 2024-2-25 13:06:03
yyz2191958 发表于 2024-2-25 13:00
结果实验:
if "%1"==""————目录没有空格的时候正常。有空格的时候,拖到没有反应
if %1==""——— ...

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

有没有空格,有没有拖放,都试一下
yyz2191958 发表于 2024-2-25 13:00:41
hilsonma 发表于 2024-2-25 12:31
拖放就相当于命令行里命令之后的第一个参数,即%1
比如你将一个文件或目录拖放到批处理图标上,这个文件或 ...

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

点评

那你试 if %1.==. 这是我一直使用的 有没有空格,有没有拖放,都试一下  详情 回复 发表于 2024-2-25 13:06
hilsonma 发表于 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
复制代码

点评

赞一个!  详情 回复 发表于 2024-2-25 13:12

评分

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

查看全部评分

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

很给力!
hilsonma 发表于 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"=="" 来判断有没有拖放

点评

结果实验: if "%1"==""————目录没有空格的时候正常。有空格的时候,拖到没有反应 if %1==""—————目录有没有空格都正常  详情 回复 发表于 2024-2-25 13:00
很给力!  详情 回复 发表于 2024-2-25 12:33

评分

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

查看全部评分

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

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

点评

也可能设置颜色后内部初始化了,不知道呀。老弟,加油!  详情 回复 发表于 2024-2-25 13:59
yyz2191958 发表于 2024-2-25 12:21:12
zlq_hysy 发表于 2024-2-25 12:19
压根就没跳过第一二代码,只是你没肉眼看见而已,十个空行被下面的cls命令清除,if判断不等于空后直接转 ...

原来是这样,谢谢
zlq_hysy 发表于 2024-2-25 12:19:08
yyz2191958 发表于 2024-2-25 11:55
为什么拖拽的时候,能够跳过:第一、二行  代码?

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

点评

不对呀! ::cls——————注释了,也是一样跳过黑窗口  详情 回复 发表于 2024-2-25 12:24
原来是这样,谢谢  详情 回复 发表于 2024-2-25 12:21

评分

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

查看全部评分

yyz2191958 发表于 2024-2-25 12:12:52
szwp 发表于 2024-2-25 11:59
如果为空说明没拖

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

点评

如果不知道"%~f1"什么意思,可以用echo "%~f1" &pause 来观察,加在if前。  详情 回复 发表于 2024-2-26 09:05
szwp 发表于 2024-2-25 11:59:02
如果为空说明没拖

点评

%~f1——————用来判断有没有拖?  详情 回复 发表于 2024-2-25 12:12

评分

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

查看全部评分

yyz2191958 发表于 2024-2-25 11:55:19
为什么拖拽的时候,能够跳过:第一、二行  代码?

点评

压根就没跳过第一二代码,只是你没肉眼看见而已,十个空行被下面的cls命令清除,if判断不等于空后直接转到下一个命令行cd/d。。。。  详情 回复 发表于 2024-2-25 12:19
yyz2191958 发表于 2024-2-25 11:43:31
dos时代菜鸟 发表于 2024-2-25 11:36
%~fI        - 将 %I 扩展到一个完全合格的路径名

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

%~f1下一行的:cd /d "%~dp1"————算不算第一个 参数 ?谢谢
yyz2191958 发表于 2024-2-25 11:38:58
dos时代菜鸟 发表于 2024-2-25 11:36
%~fI        - 将 %I 扩展到一个完全合格的路径名

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

谢谢!我需要慢慢琢磨
dos时代菜鸟 发表于 2024-2-25 11:36:55
%~fI        - 将 %I 扩展到一个完全合格的路径名

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

点评

%~f1下一行的:cd /d "%~dp1"————算不算第一个 参数 ?谢谢  详情 回复 发表于 2024-2-25 11:43
谢谢!我需要慢慢琢磨  详情 回复 发表于 2024-2-25 11:38

评分

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

查看全部评分

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

闽公网安备 35020302032614号

GMT+8, 2024-11-15 11:49

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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