2015-01-15 75 views
0

我有一个问题将文件重命名为dir的结果。 实施例:批处理:根据dir命令重命名文件

候选在C驱动器和候选文件夹内有一个文件夹名有以下文件:

  1. something.txt
  2. everything.doc
  3. onething.bmp

当我dir,我会得到文件的列表。

在该文件夹将始终为1个txt文件和1个bmp文件

如何重命名BMP文件,因此将作为TXT文件,假设我用DIR * .TXT

同名

在上述我如何改变的例子onething.bmpsomething.bmp

预先感谢任何答案

回答

1
for %%X in ("*.txt") do (
for %%Y in ("*.bmp") do (
    echo ren %%Y %%~nX%%~xY 
) 
) 

如果输出是您需要的,请删除echo

为了%%~nX等解释见for /?

+0

谢谢@Stephan ... 我仍然无法把它弄清楚。这是我做的 copyFiles copy * .txt c:\ MY \%username%\%3 \ copy * .doc c:\ MY \%username%\%3 \ copy * .bmp c: \ MY \%的用户名%\%3 \ 转到renameBMP :renameBMP 坎德拉/ DC:\ MY \%的用户名%\%3(的 “* .txt”)做( 为%% 为%% X为Y( “* .BMP”)做( 仁%%Ÿ%%〜NX %%〜XY ) ) 暂停 转到退出 结果不重命名为BMP一样的txt文件名。 只有1个txt文件和1个bmp文件 – useniezan

+0

'copy .txt'不会复制,而是给出错误(使用'copy * .txt')同样在'for %% X in(“.txt”)中......通配符丢失了。 – Stephan

0

这应该工作:

@ECHO OFF 
FOR %%X in ("*.txt") DO (SET txtName=%%X) 
FOR %%X in ("*.bmp") DO (SET bmpName=%%X) 
FOR /F "tokens=1 delims=." %%X IN ("%txtName%") DO (
    REN %bmpName% %%X.bmp 
) 

如果BAT文件位于同一文件夹中的TXT和BMP文件这只会工作。如果它位于其他地方,则必须调整路径。 如果文件夹中有多个bmp/txt文件,则只处理“最后”文件。

+0

感谢@Michaels 抱歉地通知,该文件是不是该批次的位置为同一因此你的编码不​​给,我想但真的很欣赏的结果帮助 – useniezan