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

评分人数

    • yyz219: 上传了,麻烦看一下技术 + 1

TOP

本帖最后由 qixiaobin0715 于 2022-9-20 11:16 编辑

回复 7# yyz219
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%x in (.txt .ini .bat .vbs) do set %%x=true
  4. (for /f "delims=" %%i in (1.csv) do (
  5.     for %%j in (%%i) do (
  6.         set str=%%j
  7.     )
  8.     for /f "delims=-" %%k in (!str!) do (
  9.         if defined %%~xk echo,%%k
  10.     )
  11. ))>1.txt
  12. pause
复制代码
看看显示是否正确
1

评分人数

    • yyz219: 再麻烦一下,让它在生成1.txt技术 + 1

TOP

回复 11# yyz219
已修改

TOP

如果数据像你提供的那么规整的话,这样效率应当更高些:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%i in ('findstr "\.txt \.ini \.bat \.vbs" 1.csv') do (
  4.     for %%j in (%%i) do set str=%%j
  5.     for /f "delims=-" %%k in (!str!) do echo,%%k
  6. ))>1.txt
  7. pause
复制代码
未经测试。
1

评分人数

TOP

回复 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

评分人数

    • yyz219: 辛苦了 谢谢技术 + 1

TOP

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
复制代码

TOP

如果文件扩展名都是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

评分人数

TOP

返回列表