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

[文本处理] 批处理如何更改扩展名并保留原文件

[复制链接]
发表于 2017-1-8 12:30:56 | 显示全部楼层 |阅读模式
本帖最后由 meiszp 于 2017-1-8 12:33 编辑

在论坛搜索了下,都是直接更改文件扩展名,原文件也没了。
ren *.dat*.txt不能更改子文件夹下的。

求批处理可以更改当前文件夹及子文件夹下所有 dat文件为txt文件,并且保留原dat文件,将新txt文件放入当前目录下的new文件夹。
发表于 2017-1-9 07:39:55 | 显示全部楼层
本帖最后由 pcl_test 于 2017-1-9 15:25 编辑

你以前的贴
http://www.bathome.net/viewthread.php?tid=41777
  1. powershell "$fd='new\';md $fd -force|out-null;ls . *.dat -r|%%{cp $_.FullName ($fd+$_.BaseName+'.txt')}"
  2. pause
复制代码
发表于 2017-1-9 15:00:20 | 显示全部楼层
  1. @xcopy /syi  "目标目录\*.dat" "new\*.txt"
复制代码
这么简单其实百度一下就有了
 楼主| 发表于 2017-1-11 00:29:33 | 显示全部楼层
代码不能执行,对syi不明白, 还有就是目标了目录怎么默认成批处理所在的目录。
发表于 2017-1-11 00:50:29 | 显示全部楼层
回复 4# meiszp

s是子目录 y是不显示任何确认提示i是如果目录不存在则创建 在运行输入cmd /k xcopy/?可以看到用法
发表于 2017-1-11 20:23:03 | 显示全部楼层
回复 4# meiszp
  1. @echo off
  2. xcopy /s /y /i  "%~dp0*.dat" "new\*.txt"
复制代码
 楼主| 发表于 2017-1-11 23:28:47 | 显示全部楼层
回复 6# GNU

试验了下,好像不能实现。
发表于 2017-1-11 23:37:57 | 显示全部楼层
回复 7# meiszp


    报错信息发出来看看
 楼主| 发表于 2017-1-11 23:40:37 | 显示全部楼层
  1. @echo off
  2. set /p c=是否保留源文件[y/n]:
  3. for /f "delims=" %%i in ('dir /b /s /a-d *.txt') do (
  4.     if /i "%c%" equ "y" (
  5.         copy "%%i" "%%~dpi%%~ni.dat" /y
  6.     ) else ren "%%i" "%%~ni.dat"
  7. )
  8. pause
复制代码
此代码可以实现更改扩展名,但更改后的文件是在各个子目录里,和原文件同目录,如何实现把更改后的文件放入当前目录下新建的new文件夹。
 楼主| 发表于 2017-1-11 23:42:34 | 显示全部楼层
回复 8# GNU

没有报错信息,一闪而过。
发表于 2017-1-11 23:52:41 | 显示全部楼层
回复 10# meiszp


    不要双击执行,打开一个CMD窗口,手工执行可以看到报错信息。
 楼主| 发表于 2017-1-12 21:30:27 | 显示全部楼层
回复 11# GNU
提示,不能执行循环复制。
 楼主| 发表于 2017-1-12 21:34:30 | 显示全部楼层
本帖最后由 meiszp 于 2017-1-12 22:12 编辑

回复 2# pcl_test

你好!谢谢之前的代码 ,但更改后的文件和原文件同目录,现在子目录很多,需要一个一个目录找出文件,如何实现把更改后的所有文件放入当前目录下新建的new文件夹,不包含子目录。谢谢!
发表于 2017-1-12 21:34:52 | 显示全部楼层
回复 12# meiszp


把 new 这个文件夹放到当前文件夹的上级目录:
  1. @echo off
  2. md ..\new
  3. xcopy /s /y /i  "%~dp0*.dat" "..\*.txt"
复制代码
 楼主| 发表于 2017-1-12 22:08:00 | 显示全部楼层
本帖最后由 meiszp 于 2017-1-12 22:37 编辑

现在可以执行了,但有两个问题:
1. 它在上级目录生成了一个new文件夹,里面是空的,其他文件提取到了上一级目录,保持了原来的目录树,
2. 删除第2行代码也可以,效果一样。

我想把更改后的所有文件放入new文件夹,并且不要子目录,只有文件。

更改成下面的,文件放入了上级new文件夹,还是保持了原理的目录结构。
  1. @echo off
  2. xcopy /s /y /i  "%~dp0*.dat" "..\new\*.txt"
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 14:12 , Processed in 0.025037 second(s), 11 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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