12
返回列表 发新帖
楼主: kxmp
收起左侧

[已解决] [cmd]怎么把这个改成相对目录的?!?!

[复制链接]
kxmp
 楼主| 发表于 2018-5-30 16:24:41 | 显示全部楼层
fireherman 发表于 2018-5-30 16:20
已经修改,在8楼文末。

那不是显示不显示的问题

他的输出结果就是跟着输入的...  输入是绝对路径 输出就是绝对路径...
for这个是不是做不到输出相对路径
os52
发表于 2018-5-30 16:38:44 | 显示全部楼层
本帖最后由 os52 于 2018-5-30 16:43 编辑

for %i in (*) do echo %~nxi
另外,FOR 变量参照的替换已被增强。你现在可以使用下列
选项语法:

     %~I          - 删除任何引号("),扩展 %I
     %~fI        - 将 %I 扩展到一个完全合格的路径名
     %~dI        - 仅将 %I 扩展到一个驱动器号
     %~pI        - 仅将 %I 扩展到一个路径
     %~nI        - 仅将 %I 扩展到一个文件名
     %~xI        - 仅将 %I 扩展到一个文件扩展名
     %~sI        - 扩展的路径只含有短名
     %~aI        - 将 %I 扩展到文件的文件属性
     %~tI        - 将 %I 扩展到文件的日期/时间
     %~zI        - 将 %I 扩展到文件的大小
     %~$PATH:I   - 查找列在路径环境变量的目录,并将 %I 扩展
                   到找到的第一个完全合格的名称。如果环境变量名
                   未被定义,或者没有找到文件,此组合键会扩展到
                   空字符串

可以组合修饰符来得到多重结果:

     %~dpI       - 仅将 %I 扩展到一个驱动器号和路径
     %~nxI       - 仅将 %I 扩展到一个文件名和扩展名
     %~fsI       - 仅将 %I 扩展到一个带有短名的完整路径名
     %~dp$PATH:I - 搜索列在路径环境变量的目录,并将 %I 扩展
                   到找到的第一个驱动器号和路径。
     %~ftzaI     - 将 %I 扩展到类似输出线路的 DIR

在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法
用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名
比较易读,而且避免与不分大小写的组合键混淆。

kxmp
 楼主| 发表于 2018-5-30 16:50:39 | 显示全部楼层
os52 发表于 2018-5-30 16:38
for %i in (*) do echo %~nxi

这样好是好

可是子目录下面的文件 又不显示了...
他就直接显示了个文件名...
\123
\folder\123

这样就直接出来了2个
123
123
os52
发表于 2018-5-30 17:05:40 | 显示全部楼层
kxmp 发表于 2018-5-30 16:50
这样好是好

可是子目录下面的文件 又不显示了...

echo off
setlocal EnableExtensions EnableDelayedExpansion
for /r %%i in (*) do (set data=%%~dpnxi
CALL SET output=!data:%cd%=!
echo !output!
)
pause

评分

参与人数 1人气 +1 收起 理由
kxmp + 1 感谢解答: )

查看全部评分

kxmp
 楼主| 发表于 2018-5-30 17:21:59 | 显示全部楼层
本帖最后由 kxmp 于 2018-5-30 17:33 编辑
os52 发表于 2018-5-30 17:05
echo off
setlocal EnableExtensions EnableDelayedExpansion
for /r %%i in (*) do (set data=%%~dpnx ...

这个输出前面有个   \
能把他去掉么
2018-05-30 17:32:49
我在cd%后面加了个\ 发现第一个\消失了
kxmp
 楼主| 发表于 2018-5-30 17:54:18 | 显示全部楼层
本帖最后由 kxmp 于 2018-5-30 18:01 编辑

修改版
@echo off
setlocal EnableExtensions EnableDelayedExpansion
for /r %%i in (*) do (set data=%%~dpnxi
CALL SET output=!data:%cd%\=!
md5sum "!output!" >%temp%\md.txt
copy %temp%\md.txt md5sum
)

要不然不修改 直接等列表生成完成之后 直接进去删掉那个包含txt文件的一行就行 或者干脆不管他...

用那个另类方法也可以

或者直接crmd5 >../a.txt 这样把文件创建在上层目录 然后手动复制回去


ghostByWolf
发表于 2018-5-31 09:40:11 | 显示全部楼层
mark  一下,学习学习
neo007
发表于 2018-6-4 08:23:49 | 显示全部楼层
mark  一下,学习学习
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-11-25 17:54 , Processed in 0.093673 second(s), 15 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

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