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

[文本处理] [已解决]批处理从1.csv中取出.txt、.ini、.bat、.vbs的完整路径(含扩展名)

[复制链接]
 楼主| 发表于 2022-9-20 22:22:43 | 显示全部楼层
本帖最后由 yyz219 于 2022-9-21 01:33 编辑
如果数据像你提供的那么规整的话,这样效率应当更高些:未经测试。
qixiaobin0715 发表于 2022-9-20 16:37


如果文件路径中有 “!”号的时候,被过滤掉了,能不能修改一下

下面是不能正确输出的1.csv
https://pan.baidu.com/s/1D0-KYijTpeT6mD2UXB3r-g
 楼主| 发表于 2022-9-20 22:33:57 | 显示全部楼层
回复  yyz219


   
直接在CMD窗口下试试如下指令:
hfxiang 发表于 2022-9-20 10:55



    能够正确输出,麻烦修改为批处理

谢谢
发表于 2022-9-21 08:23:00 | 显示全部楼层
for指令在命令行执行与批处理内执行,其两者之间的参数对应关系为:
在命令行用单百分号(%),如下:

  1. @(for /f "tokens=10 delims=," %a in (1.csv) do @for /f %b in ('echo %~a^|findstr /i ".txt .ini .bat .vbs"')  do @echo "%~b")>1.txt 2>nul
复制代码
在批处理用双百分号(%%),如下:

  1. @(for /f "tokens=10 delims=," %%a in (1.csv) do @for /f %%b in ('echo %%~a^|findstr /i ".txt .ini .bat .vbs"')  do @echo "%%~b")>1.txt 2>nul
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 能修改一下主楼的吗?使它支持“!”

查看全部评分

 楼主| 发表于 2022-9-21 08:25:51 | 显示全部楼层
for指令在命令行执行与批处理内执行,其两者之间的参数对应关系为:
在命令行用单百分号(%),如下:在批 ...
hfxiang 发表于 2022-9-21 08:23


非常感谢
 楼主| 发表于 2022-9-21 08:58:19 | 显示全部楼层
for指令在命令行执行与批处理内执行,其两者之间的参数对应关系为:
在命令行用单百分号(%),如下:在批 ...
hfxiang 发表于 2022-9-21 08:23



    你这些代码比主楼的慢一些,能不能加快一点(或者修改一下主楼的代码,使它支持“!”号)

谢谢
发表于 2022-9-21 10:08:58 | 显示全部楼层
本帖最后由 flashercs 于 2022-9-21 10:14 编辑
  1. 0<1/*,:
  2. @echo off
  3. cd /d "%~dp0"
  4. cscript -nologo -e:jscript "%~f0" "1.csv" "1.txt"
  5. pause
  6. exit /b
  7. */;
  8. if (WScript.Arguments.length < 2) WScript.Quit();
  9. var fso = new ActiveXObject('Scripting.FileSystemObject');
  10. var re = /(?:")([^"]*\.(?:txt|ini|bat|vbs))[^"]*"$/igm;
  11. try {
  12.   var tsread = fso.OpenTextFile(WScript.Arguments(0), 1, false, -2);
  13.   var str = tsread.ReadAll();
  14.   tsread.Close();
  15.   var tswrite = fso.OpenTextFile(WScript.Arguments(1), 2, true, -2);
  16.   var arr;
  17.   while (null != (arr = re.exec(str))) {
  18.     tswrite.WriteLine(arr[1]);
  19.   }
  20.   tswrite.Close();
  21. } catch (e) {

  22. }
复制代码

评分

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

查看全部评分

发表于 2022-9-21 10:16:18 | 显示全部楼层
回复 16# yyz219
那就去掉变量延迟:
  1. @echo off
  2. (for /f "delims=" %%i in ('findstr "\.txt \.ini \.bat \.vbs" 1.csv') do (
  3.     for /f tokens^=17^ delims^=^" %%j in (%%i) do (
  4.         for /f "delims=-" %%k in ("%%j") do echo,%%k
  5.     )
  6. ))>1.txt
  7. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 辛苦了 谢谢

查看全部评分

 楼主| 发表于 2022-9-21 10:32:21 | 显示全部楼层
回复  yyz219
那就去掉变量延迟:
qixiaobin0715 发表于 2022-9-21 10:16



    辛苦了 谢谢
 楼主| 发表于 2022-9-21 10:37:34 | 显示全部楼层
回复  yyz219
那就去掉变量延迟:
qixiaobin0715 发表于 2022-9-21 10:16



    非常成功,非常感谢
发表于 2022-9-21 10:42:38 | 显示全部楼层
本帖最后由 hfxiang 于 2022-9-21 10:45 编辑

回复 20# yyz219


   
如果想快,建议用第3方式具gawk( http://bcn.bathome.net/tool/4.1.3/gawk.exe

  1. @(for /f "delims=" %%a in ('gawk -F"," "$10~/\.txt/||/\.ini/||/\.bat/||/\.vbs/{print $10}" 1.csv') do @for /f "delims=-" %%b in (%%a) do @echo %%b)>1.txt 2>nul
复制代码

评分

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

查看全部评分

 楼主| 发表于 2022-9-21 11:06:13 | 显示全部楼层
回复  yyz219


   
如果想快,建议用第3方式具gawk(  )
hfxiang 发表于 2022-9-21 10:42


又多了一种方法,谢谢
发表于 2022-9-24 09:51:13 | 显示全部楼层
22楼代码化简为:
  1. @echo off
  2. (for /f tokens^=17^ delims^=^" %%j in ('findstr "\.txt \.ini \.bat \.vbs" 1.csv') do (
  3.     for /f "delims=-" %%k in ("%%j") do echo,%%k
  4. ))>1.txt
  5. pause
复制代码
发表于 2022-9-24 10:05:58 | 显示全部楼层
如果文件扩展名都是4个字符(包括.),用一个for循环+变量延迟即可:
  1. @echo off
  2. for /f tokens^=17^ delims^=^" %%j in ('findstr "\.txt \.ini \.bat \.vbs" 1.csv') do (
  3.     if "%%j"=="%%~fj" (
  4.         set "Filen=%%~dpnj"
  5.     ) else (
  6.         set "Filen=%%~nj"
  7.     )
  8.     set "Extn=%%~xj"
  9.     setlocal enabledelayedexpansion
  10.     echo,!Filen!!Extn:~,4!
  11.     endlocal
  12. )
  13. pause
复制代码
这个可以忽略,主要是自己想练练手。

评分

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

查看全部评分

 楼主| 发表于 2022-9-24 13:16:21 | 显示全部楼层
如果文件扩展名都是4个字符(包括.),用一个for循环+变量延迟即可:这个可以忽略,主要是自己想练练手。
qixiaobin0715 发表于 2022-9-24 10:05



     乐于助人
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 15:51 , Processed in 0.022530 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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