Board logo

标题: [文件操作] 批处理怎样合并文件并自动用上级目录命名? [打印本页]

作者: xidhgood    时间: 2018-8-15 14:00     标题: 批处理怎样合并文件并自动用上级目录命名?

求助大神!
我有堆文件,是TS的小碎片文件,需要批处理合并成一个个文件,这些文件分别放在不同的文件夹下,我希望自动合并后并自动用上级目录命名(如文件夹为“1”,合并好后自动命名为1.ts)
  1. echo off
  2. cls
  3. copy/b *.ts aa.ts
  4. color f2
  5. echo 操作完成,按任意键退出。
  6. Pause
复制代码
希望着这里的aa.ts 变成自动的
作者: /zhqsystem/zhq    时间: 2018-8-16 00:03

拖拽识别不包含子文件夹或子文件 文件夹识别默认为txt自行修改
cd/d "%~f1"
if exist "%~f1\*" copy/b ".\*.txt" ".\%~nx1.txt"
if not exist "%~f1\" if exist "%~f1" for /f "delims=" %%i in ("%cd%")do copy/b ".\*%~x1" ".\%%~nxi%~x1"
作者: holley    时间: 2018-8-16 08:58

回复 1# xidhgood
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /r %%i in (*.ts) do (
  4. set "var=%%~pi"
  5.     for /f "tokens=*" %%a in ("!var:~0,-1!") do (
  6.         copy/b %%i %%~na%%~xi
  7. )
  8. )
  9. echo 操作完成,按任意键退出。
复制代码

作者: Batcher    时间: 2018-8-16 19:07

回复 3# holley


这样可以减少copy命令执行的次数,提升效率:
  1. @echo off
  2. for /d %%i in (*) do (
  3.     copy /b "%%i\*.ts" "%%i.ts"
  4. )
复制代码

作者: xidhgood    时间: 2018-8-20 08:48

回复 2# /zhqsystem/zhq


    谢谢,因为我是刚注册的账号,一开始我自己发了求助贴可是我自己并打不开我的发贴子,所以过了好几天再来看,今天能打开了,回复晚了不好意思!
作者: xidhgood    时间: 2018-8-20 08:50

回复 3# holley


     谢谢,因为我是刚注册的账号,一开始我自己发了求助贴可是我自己并打不开我的发贴子,所以过了好几天再来看,今天能打开了,回复晚了不好意思!
你的我试了,是我使用的方法不对还是怎么的,我运行BAT没有任何作用 ,(二楼帮我用拖拽的我试了是可以的)你这个是BAT直接运行吗?还是要怎么样
作者: xidhgood    时间: 2018-8-20 08:52

回复 4# Batcher


     回复晚了不好意思!
但是我用的代码不管用哎 ,是我的使用方法不对吗?新手上路哈。。。。
作者: xidhgood    时间: 2018-8-20 08:59

echo off
set "cd_=%cd%"
:loop
set "cd_=%cd_:*\=%"
set "cd_tmp=%cd_:\=%"
if not "%cd_tmp%"=="%cd_%" goto loop
echo "%cd_%"
cls
copy/b *.ts "%cd_%".ts
color f2
echo 操作完成,按任意键退出。
Pause
这是其它人帮我写的一个批处理,是可行的,但是我还不知足,想更智能一点,就是希望运行后自动删除旧的TS文件,只留下合并后的新文件,能实现吗?
作者: Batcher    时间: 2018-8-20 09:33

回复 8# xidhgood


测试之前注意做好备份

@echo off
set "cd_=%cd%"
:loop
set "cd_=%cd_:*\=%"
set "cd_tmp=%cd_:\=%"
if not "%cd_tmp%"=="%cd_%" goto loop
echo "%cd_%"
cls
copy/b *.ts "%cd_%".ts
for %%i in (*.ts) do (
    if "%%i" neq "%cd_%.ts" (
        del /f /q "%%i"
    )
)

color f2
echo 操作完成,按任意键退出。
Pause
作者: xidhgood    时间: 2018-8-20 11:57

回复 9# Batcher


    哇哦,大神,你太牛B了,这就是我想要的效果(虽然我看懂这些代码),非常感谢!!!!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2