免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10243 | 回复: 11
打印 上一主题 下一主题

如何用window的bat写一个显示当前文件夹文件列表的批处理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-17 15:48 |只看该作者 |倒序浏览
10可用积分
如何用window的bat写一个显示当前文件夹文件列表的批处理
我知道可以使用
dir *.* /s /b > filelist.f

这个显示的是绝对路径,我想要相对路径
而且得到的列表是 "\"间隔的 我想要要 “/” 间隔 谢谢
对这个不熟悉,也没有找到相关的资料

用其他批处理也可以只要能在cygwin中使用
谢谢

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2009-09-17 15:48 |只看该作者

test.bat

  1. @echo off
  2. set ParentPath=C:\test\Shell_HAT
  3. for /f "delims=" %%a in ('dir /s /b "%ParentPath%\*.*"') do (
  4.   set "FullPath=%%a"
  5.   setlocal enabledelayedexpansion
  6.   set RelativePath=!FullPath:%ParentPath%=!
  7.   set RelativePath=!RelativePath:\=/!
  8.   >>filelist.f echo,!RelativePath!
  9.   endlocal
  10. )
复制代码

论坛徽章:
0
3 [报告]
发表于 2009-09-17 15:53 |只看该作者
你都用cygwin了
为何不直接用bash啊

论坛徽章:
0
4 [报告]
发表于 2009-09-17 16:07 |只看该作者

回复 #2 nuclearxin 的帖子

不会

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
5 [报告]
发表于 2009-09-17 16:10 |只看该作者

回复 #1 heavensword 的帖子

不要/s就是相对路径了。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
6 [报告]
发表于 2009-09-17 16:13 |只看该作者
find > filelist.f
不可以了。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2009-09-17 17:30 |只看该作者
cygwin确实好使!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2009-09-17 17:44 |只看该作者
6楼是批处理高手啊

论坛徽章:
0
9 [报告]
发表于 2009-09-18 10:35 |只看该作者
因为系统安装了cygwin 就用了一个偷懒的方法
1.flist.sh 内容为 find ./ -name "*.cpp" > cfile.f
2.flist.bat 内容为 bash -login "flist.sh"
3.修改cygwin/etc/profile 中的
# Make sure we start in home unless invoked by CHERE
if [ ! -z "${CHERE_INVOKING}" ]; then
  unset CHERE_INVOKING
else
  cd "${HOME}"
fi
修改为
# Make sure we start in home unless invoked by CHERE
if [ ! -z "${CHERE_INVOKING}" ]; then
  unset CHERE_INVOKING
#else
#  cd "${HOME}"
fi

就可以了 把flist.sh 和flist.bat 放在任何一个文件夹下面 点击flist.bat就可以得到想要的文件格式了
谢谢各位的支持和帮助

论坛徽章:
0
10 [报告]
发表于 2009-09-18 10:36 |只看该作者

回复 #2 Shell_HAT 的帖子

谢谢Shell_HAT
有代码说明比什么都牛
谢谢你的支持

如何给分啊????

[ 本帖最后由 heavensword 于 2009-9-18 10:39 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP