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

[文件操作] [已解决]批处理怎样将两个文件的各行一一对应合并为一个文件?

本帖最后由 QIAOXINGXING 于 2012-3-15 22:55 编辑

电视剧的字幕和影片名对不上。

“影片1.txt” 里是电视剧的文件列表,如
   1.mkv
   2.mkv
   ....................
“字幕1.txt” 里是字幕的列表,如
   a.ass
   b.ass
  ,..............................
二者行数相同,且一一对应。
怎么把对应行处理并合成一行,即变成
  ren "a.ass " "1.ass"
   ...............

我写的感觉不靠谱,怎么写才好点儿?
  1. @echo off&SetLocal EnableDelayEdexpansion&cd /d "%~dp0"
  2. set "n=0"
  3. for /f "delims=" %%i in (影片1.txt) do (
  4.   set /a "n+=1"
  5.   set "yingpian!n!=%%~ni"
  6. )
  7. set "n=0"
  8. (for /f "delims=" %%i in (字幕1.txt) do (
  9.   set /a "n+=1"
  10.   call echo ren "%%i"  "%%yingpian!n!%%.ass"
  11. ))>rename.bat
复制代码
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

说实在的我有个不完全使用批处理的简单方法
你就使用excel 搞4列就可以了
第一列影片文件列表
第二列rename
第三列字幕文件列表
第四列修改后的字幕文件列表 (只需使用替换功能将第一列的影片文件列表拷过来然后将文件后缀从.mkv全部替换为.ass)
最后将后三列拷进一个bat文件运行就行了
当然在实现过程中一定要注意空格  
我想这样能更快的实现你的需求,当然本着对批处理学习的目的可以使用更复杂的批处理控制语句得以实现
O(∩_∩)O
1

评分人数

TOP

说实在的我有个不完全使用批处理的简单方法
你就使用excel 搞4列就可以了
第一列影片文件列表
第二列re ...
dangdangzone 发表于 2012-3-15 15:00


  
    呵呵,谢谢你的分享,其实我之前也是这么整的,只是太“手动”化了,还是“自动”的好。。

TOP

finedstr 处理

TOP

回复 4# terse


    能说清楚点吗?我悟性没那么高。。。。。

TOP

回复 5# QIAOXINGXING
其实学会搜索
方法好多的
  1. @echo off&setlocal enabledelayedexpansion
  2. if "%1" equ "" (
  3.    for /f "tokens=1* delims=:" %%i in ('"%0 $|sort"') do (
  4.        if !N! equ %%i echo ren %%j !str:~,-4!%%~xj
  5.        set N=%%i&set str=%%j
  6.       
  7.    )
  8. pause&exit
  9. ) else for /f "tokens=1* delims=:" %%i in ('findstr /n "." 影片1.txt 字幕1.txt') do echo %%j
复制代码
1

评分人数

    • QIAOXINGXING: 费了老鼻子劲,终于看明白怎么回事了。。。技术 + 1

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%a in (a.txt) do (
  4.     set /p str=
  5.     echo ren "!str!" "%%~na.ass"
  6. ))<b.txt >c.bat
复制代码
1

评分人数

TOP

返回列表