找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 87632|回复: 22

[文本处理] [已解决]批处理如何把文件名横向排列并用分隔符隔开?

[复制链接]
发表于 2015-7-2 10:04:45 | 显示全部楼层 |阅读模式
本帖最后由 ahgogo 于 2015-7-5 11:42 编辑

我想实现文件夹里的文件名横向排列并用字符分隔开,不知道怎样实现,求大神帮助!

只会用DIR命令列出文件名
dir *.* /b> 1.txt

1.jpg
2.jpg
3.jpg
4.jpg
...
//------------------------------

我想输出的1.txt里是这样的  1.jpg|2.jpg|3.jpg|4.jpg|...
发表于 2015-7-2 11:46:49 | 显示全部楼层
  1. @(for /f "delims=" %%a in ('dir /a-d /b^|findstr /iv "bat$"') do @set /p=%%a^|)<nul>"1.txt"
复制代码

评分

参与人数 1技术 +1 收起 理由
ahgogo + 1 感谢分享

查看全部评分

 楼主| 发表于 2015-7-2 16:19:02 | 显示全部楼层
回复 2# pcl_test

非常感谢,很好用,
 楼主| 发表于 2015-7-3 17:34:12 | 显示全部楼层
追问:如果在文件名前面加上路径该怎么写呢
如果图片都放在pic文件夹里(C:\Users\Administrator\Desktop\test\images\pic)
我想取出 images\pic 文件夹路径放到图片前面
images/pic/1.jpg|images/pic/2.jpg
发表于 2015-7-3 19:14:38 | 显示全部楼层
使用第三方命令 hash
  1. hash /printf:"%s|"
复制代码
 楼主| 发表于 2015-7-3 21:45:03 | 显示全部楼层
怎样加到这个批处理中呢,我不会用这个

@(for /f "delims=" %%a in ('dir /a-d /b^|findstr /iv "bat$"') do @set /p=%%a^|)<nul>"1.txt"
发表于 2015-7-3 22:58:56 | 显示全部楼层
回复 4# ahgogo


  然而你并没有说清楚路径的截取规则,从上一级目录到图片当前目录吗?
发表于 2015-7-4 00:04:38 | 显示全部楼层
获取相对路径的技巧:
  1. @(for /f "delims=" %%a in ('findstr /s /m .* *^|findstr /iv "bat$"') do @set /p=%%a^|)<nul>"1.txt"
复制代码
 楼主| 发表于 2015-7-5 00:00:45 | 显示全部楼层
@pcl_test 是从上一级目录到图片当前目录,可能我描述的不是很好理解

为什么我运行bat的时候输出了1.txt,打开后什么都没有呢,是我电脑配置的问题吗,java环境也配置好的!
发表于 2015-7-5 09:08:37 | 显示全部楼层
本帖最后由 pcl_test 于 2015-7-5 15:38 编辑
  1. @set @n=0; /* & echo off
  2. for /f "delims=" %%a in ('echo;%~dp0^|cscript -nologo -e:jscript "%~0"') do set "fpath=%%a"
  3. (for %%b in (*.jpg *.bmp *.gif *.png *.jpeg) do set /p=%fpath%%%b^|)<nul>"1.txt"
  4. echo;完成
  5. ping -n 2 0 >nul&exit & rem */
  6. var str = "";
  7. var Arr = new Array();
  8. var Arr = WScript.StdIn.ReadLine().split("\");
  9. if (Arr.length<3) {
  10.     str = Arr[1];
  11. }else if (Arr.length==3){
  12.     str = Arr[1]+"\"+Arr.pop();
  13. }else{
  14.     str = Arr[Arr.length-3]+"\"+Arr[Arr.length-2]+"\"+Arr.pop();
  15. }
  16. WScript.Echo(str);
复制代码

评分

参与人数 1技术 +1 收起 理由
ahgogo + 1 乐于助人

查看全部评分

发表于 2015-7-5 10:14:52 | 显示全部楼层
  1. @echo off

  2. (for %%a in (*) do (
  3.         for /f "delims=| tokens=1,2" %%b in ("%%~dpa\..|%%a\..") do (
  4.                 set /p "=%%~nxb\%%~nxc\%%~nxa|"<nul
  5.         )
  6. )) >"1.txt"
复制代码

评分

参与人数 1技术 +1 收起 理由
ahgogo + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-7-5 11:41:13 | 显示全部楼层
感谢楼上各位的热心帮助,问题已解决,@pcl_test 命令执行后输出还是空的。@tmplinshi版主的方案可以,已采用,谢谢你们!
发表于 2015-7-5 15:40:18 | 显示全部楼层
回复 12# ahgogo

因为你的目录结构不对,已修改,能适应不同层次的目录结构
发表于 2015-7-5 16:52:09 | 显示全部楼层
8 楼代码有什么问题吗?
findstr /s /m .* * 取得的就是相对路径
 楼主| 发表于 2015-7-7 12:01:57 | 显示全部楼层
我也不知道,运行后输出的是空的,但是我换了台电脑是可以的,估计是电脑的问题吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:12 , Processed in 0.033489 second(s), 14 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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