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

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

本帖最后由 meiszp 于 2017-1-8 12:33 编辑

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

求批处理可以更改当前文件夹及子文件夹下所有 dat文件为txt文件,并且保留原dat文件,将新txt文件放入当前目录下的new文件夹。

本帖最后由 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
复制代码

TOP

  1. @xcopy /syi  "目标目录\*.dat" "new\*.txt"
复制代码
这么简单其实百度一下就有了

TOP

代码不能执行,对syi不明白, 还有就是目标了目录怎么默认成批处理所在的目录。

TOP

回复 4# meiszp

s是子目录 y是不显示任何确认提示i是如果目录不存在则创建 在运行输入cmd /k xcopy/?可以看到用法

TOP

回复 4# meiszp
  1. @echo off
  2. xcopy /s /y /i  "%~dp0*.dat" "new\*.txt"
复制代码

TOP

回复 6# GNU

试验了下,好像不能实现。

TOP

回复 7# meiszp


    报错信息发出来看看

TOP

  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文件夹。

TOP

回复 8# GNU

没有报错信息,一闪而过。

TOP

回复 10# meiszp


    不要双击执行,打开一个CMD窗口,手工执行可以看到报错信息。

TOP

回复 11# GNU
提示,不能执行循环复制。

TOP

本帖最后由 meiszp 于 2017-1-12 22:12 编辑

回复 2# pcl_test

你好!谢谢之前的代码 ,但更改后的文件和原文件同目录,现在子目录很多,需要一个一个目录找出文件,如何实现把更改后的所有文件放入当前目录下新建的new文件夹,不包含子目录。谢谢!

TOP

回复 12# meiszp


把 new 这个文件夹放到当前文件夹的上级目录:
  1. @echo off
  2. md ..\new
  3. xcopy /s /y /i  "%~dp0*.dat" "..\*.txt"
复制代码

TOP

本帖最后由 meiszp 于 2017-1-12 22:37 编辑

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

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

更改成下面的,文件放入了上级new文件夹,还是保持了原理的目录结构。
  1. @echo off
  2. xcopy /s /y /i  "%~dp0*.dat" "..\new\*.txt"
复制代码

TOP

返回列表