[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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|...

回复 22# ahgogo


dir /b /a-d /od
dir /b /a-d /o-d
分别执行两个命令,观察一下差异。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 21# DAIC
谢谢你的解答,
我试了下按大小排序是有效果的,但是按时间排序没有反应,怎么回事!

TOP

回复 20# ahgogo
  1. @echo off
  2. REM S  按大小(从小到大)
  3. REM D  按日期/时间(从先到后)
  4. (for /f "delims=" %%a in ('dir /b /a-d /oS') do (
  5.     for /f "delims=| tokens=1,1" %%b in ("%%a\.") do (
  6.         set /p "=%%~nxa|"<nul
  7.     )
  8. ))>"list.txt"
复制代码

TOP

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

又遇到问题,请各位帮忙

@echo off

(for %%a in (*) do (
        for /f "delims=| tokens=1,1" %%b in ("%%a\.") do (
                set /p "=%%~nxa|"<nul
        )
)) >"list.txt"

我想在这个批处理中实现输出文件名按文件的大小进行排序,或者按时间排序,怎样操作!

TOP

回复 18# pcl_test


"bat$"结合findstr /v 就是排除批处理文件

哦,这个文件夹中有这个批处理文件,所以要排除一下这个扩展名的文件,对吧,我说呢,怎么处理图像文件排除中出现一个bat是干什么用的。
谢谢了!

TOP

回复 17# freesoft00

"bat$"结合findstr /v 就是排除批处理文件
<nul,实际是set /p=变量<nul的一部分,实现退格

TOP

本帖最后由 freesoft00 于 2015-7-7 19:13 编辑

回复 2# pcl_test

请教两个问题:
"bat$"是什么意思,没有太明白
导入到文件我知道的是>  或者>>
你代码最后面对<nul>"1.txt是否可以解释一下是怎么回事?
do @set /p=%%a^|改为do @set p=%%a^|不行吗?为什么要添加一个/呢?
希望能给解释一下。

TOP

回复 10# pcl_test


    rem 可以省掉

TOP

我也不知道,运行后输出的是空的,但是我换了台电脑是可以的,估计是电脑的问题吧

TOP

8 楼代码有什么问题吗?
findstr /s /m .* * 取得的就是相对路径

TOP

回复 12# ahgogo

因为你的目录结构不对,已修改,能适应不同层次的目录结构

TOP

感谢楼上各位的热心帮助,问题已解决,@pcl_test 命令执行后输出还是空的。@tmplinshi版主的方案可以,已采用,谢谢你们!

TOP

  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

评分人数

TOP

本帖最后由 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

评分人数

TOP

返回列表