标题: [文本处理] [已解决]批处理如何把文件名横向排列并用分隔符隔开? [打印本页]
作者: ahgogo 时间: 2015-7-2 10:04 标题: [已解决]批处理如何把文件名横向排列并用分隔符隔开?
本帖最后由 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|...
作者: pcl_test 时间: 2015-7-2 11:46
- @(for /f "delims=" %%a in ('dir /a-d /b^|findstr /iv "bat$"') do @set /p=%%a^|)<nul>"1.txt"
复制代码
作者: ahgogo 时间: 2015-7-2 16:19
回复 2# pcl_test
非常感谢,很好用,
作者: ahgogo 时间: 2015-7-3 17:34
追问:如果在文件名前面加上路径该怎么写呢
如果图片都放在pic文件夹里(C:\Users\Administrator\Desktop\test\images\pic)
我想取出 images\pic 文件夹路径放到图片前面
images/pic/1.jpg|images/pic/2.jpg
作者: CrLf 时间: 2015-7-3 19:14
使用第三方命令 hash复制代码
作者: ahgogo 时间: 2015-7-3 21:45
怎样加到这个批处理中呢,我不会用这个
@(for /f "delims=" %%a in ('dir /a-d /b^|findstr /iv "bat$"') do @set /p=%%a^|)<nul>"1.txt"
作者: pcl_test 时间: 2015-7-3 22:58
回复 4# ahgogo
然而你并没有说清楚路径的截取规则,从上一级目录到图片当前目录吗?
作者: CrLf 时间: 2015-7-4 00:04
获取相对路径的技巧:- @(for /f "delims=" %%a in ('findstr /s /m .* *^|findstr /iv "bat$"') do @set /p=%%a^|)<nul>"1.txt"
复制代码
作者: ahgogo 时间: 2015-7-5 00:00
@pcl_test 是从上一级目录到图片当前目录,可能我描述的不是很好理解
为什么我运行bat的时候输出了1.txt,打开后什么都没有呢,是我电脑配置的问题吗,java环境也配置好的!
作者: pcl_test 时间: 2015-7-5 09:08
本帖最后由 pcl_test 于 2015-7-5 15:38 编辑
- @set @n=0; /* & echo off
- for /f "delims=" %%a in ('echo;%~dp0^|cscript -nologo -e:jscript "%~0"') do set "fpath=%%a"
- (for %%b in (*.jpg *.bmp *.gif *.png *.jpeg) do set /p=%fpath%%%b^|)<nul>"1.txt"
- echo;完成
- ping -n 2 0 >nul&exit & rem */
- var str = "";
- var Arr = new Array();
- var Arr = WScript.StdIn.ReadLine().split("\\");
- if (Arr.length<3) {
- str = Arr[1];
- }else if (Arr.length==3){
- str = Arr[1]+"\\"+Arr.pop();
- }else{
- str = Arr[Arr.length-3]+"\\"+Arr[Arr.length-2]+"\\"+Arr.pop();
- }
- WScript.Echo(str);
复制代码
作者: tmplinshi 时间: 2015-7-5 10:14
- @echo off
-
- (for %%a in (*) do (
- for /f "delims=| tokens=1,2" %%b in ("%%~dpa\..|%%a\..") do (
- set /p "=%%~nxb\%%~nxc\%%~nxa|"<nul
- )
- )) >"1.txt"
复制代码
作者: ahgogo 时间: 2015-7-5 11:41
感谢楼上各位的热心帮助,问题已解决,@pcl_test 命令执行后输出还是空的。@tmplinshi版主的方案可以,已采用,谢谢你们!
作者: pcl_test 时间: 2015-7-5 15:40
回复 12# ahgogo
因为你的目录结构不对,已修改,能适应不同层次的目录结构
作者: CrLf 时间: 2015-7-5 16:52
8 楼代码有什么问题吗?
findstr /s /m .* * 取得的就是相对路径
作者: ahgogo 时间: 2015-7-7 12:01
我也不知道,运行后输出的是空的,但是我换了台电脑是可以的,估计是电脑的问题吧
作者: CrLf 时间: 2015-7-7 17:03
回复 10# pcl_test
rem 可以省掉
作者: freesoft00 时间: 2015-7-7 18:57
本帖最后由 freesoft00 于 2015-7-7 19:13 编辑
回复 2# pcl_test
请教两个问题:
"bat$"是什么意思,没有太明白
导入到文件我知道的是> 或者>>
你代码最后面对<nul>"1.txt是否可以解释一下是怎么回事?
do @set /p=%%a^|改为do @set p=%%a^|不行吗?为什么要添加一个/呢?
希望能给解释一下。
作者: pcl_test 时间: 2015-7-7 19:08
回复 17# freesoft00
"bat$"结合findstr /v 就是排除批处理文件
<nul,实际是set /p=变量<nul的一部分,实现退格
作者: freesoft00 时间: 2015-7-7 19:16
回复 18# pcl_test
"bat$"结合findstr /v 就是排除批处理文件
哦,这个文件夹中有这个批处理文件,所以要排除一下这个扩展名的文件,对吧,我说呢,怎么处理图像文件排除中出现一个bat是干什么用的。
谢谢了!
作者: ahgogo 时间: 2016-1-4 23:07 标题: RE: [已解决]批处理如何把文件名横向排列并用分隔符隔开?
又遇到问题,请各位帮忙
@echo off
(for %%a in (*) do (
for /f "delims=| tokens=1,1" %%b in ("%%a\.") do (
set /p "=%%~nxa|"<nul
)
)) >"list.txt"
我想在这个批处理中实现输出文件名按文件的大小进行排序,或者按时间排序,怎样操作!
作者: DAIC 时间: 2016-1-4 23:28
回复 20# ahgogo - @echo off
- REM S 按大小(从小到大)
- REM D 按日期/时间(从先到后)
- (for /f "delims=" %%a in ('dir /b /a-d /oS') do (
- for /f "delims=| tokens=1,1" %%b in ("%%a\.") do (
- set /p "=%%~nxa|"<nul
- )
- ))>"list.txt"
复制代码
作者: ahgogo 时间: 2016-1-5 10:00
回复 21# DAIC
谢谢你的解答,
我试了下按大小排序是有效果的,但是按时间排序没有反应,怎么回事!
作者: gawk 时间: 2016-1-5 10:31
回复 22# ahgogo
dir /b /a-d /od
dir /b /a-d /o-d
分别执行两个命令,观察一下差异。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |