1

我正在尝试在命令提示符下使用FOR命令重命名 Windows 目录中存在的所有文件,如下所示:

for %1 in (*.*) do ren %1 test%1 

例如,这会将文件enc1.ctl重命名为testenc1.ctl enc2.ctltestenc2.ctl

那不是我想要的。我想要的是 enc1.ctl重命名为test1.ctl enc2.ctl重命名为test2.ctl

我怎么做?


@Akelunuk:谢谢,这很有效,但我的文件名是

h263_enc_random_pixels_1.ctl , h263_enc_random_pixels_2.ctl我想重命名为

test1.ctl 和 test2.ctl分别

那怎么办?

4

4 回答 4

2

我懂了!

for %1 in (.) do ren %1 t%1

进而:

ren tenc*.* test*.*
于 2008-10-10T14:06:40.490 回答
1

如果您知道文件的数量(例如 10 个),您可以使用

for /L %1 in (1,1,10) do ren enc%1.ctl test%1.ctl
于 2008-10-10T14:03:27.393 回答
1

我不确定是否可以批量进行,但是我又一次没有掌握这种原始语言... :-P

如果 CMD 不是强制性的,但您不能使用良好的文件重命名器,则可以使用 WSH 执行此操作:

var path= "E:/tmp";

var fso = WScript.CreateObject("Scripting.FileSystemObject");
var folder = fso.GetFolder(path);
var files = new Enumerator(folder.files);
for (; !files.atEnd(); files.moveNext())
{
  var file = files.item();
  var fileName = file.Name;
  var p = /^enc(\d+)\.ctl$/.exec(fileName);
  if (p != null)
  {
    var newFileName = "test" + p[1] + ".ctl";
    // Optional feedback
    WScript.echo(fileName + " -----> " + newFileName);
    file.Move(newFileName);
  }
}

当然,把它放在
我实际测试过的 file.js 中,file.Copy(file.ParentFolder + "/SO/" + newFileName);以避免丢失文件......

HTH。

于 2008-10-10T14:35:04.067 回答
0

这将使用 PREFIX 和今天的日期和时间重命名过滤器文件类型目录中的所有文件

@echo ON
cls
for %%a in (*.pdf) do (set myfiledate=%%~ta echo !myfiledate!)

echo Date format = %myfiledate%
echo dd = %myfiledate:~0,2%
echo mm = %myfiledate:~3,2%
echo yyyy = %myfiledate:~6,4%
echo.
echo Time format = %myfiledate%
echo hh = %myfiledate:~11,2%
echo mm = %myfiledate:~14,2%
echo AM = %myfiledate:~17,2%
echo.
echo Timestamp = %myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2%
ECHO "TEST..." > "test-%myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-TIME-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2%.txt"
PAUSE

这成功地将修改日期和时间作为后缀回显,但不会将信息解析为重命名。我不知道为什么,但它非常接近。也许有人无法调整以适应您的目的。

@echo ON
setlocal
cls
for %%a in (*.pdf) do (set myfiledate=%%~ta echo !myfiledate!)

:DATETIME
echo Date format = %myfiledate%
echo dd = %myfiledate:~0,2%
echo mm = %myfiledate:~3,2%
echo yyyy = %myfiledate:~6,4%

echo Time format = %myfiledate%
echo hh = %myfiledate:~11,2%
echo mm = %myfiledate:~14,2%
echo AM = %myfiledate:~17,2%
 = %myfiledate:~17,2%
echo.

echo Timestamp = %myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2%
ECHO "TEST..." > "test-%myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-TIME-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2%.txt"

for /f "delims=" %%a in ('dir *.pdf /t:a /a:-d /b /s') do call :RENAME "%%a"

:RENAME
REM for /f "tokens=1-6 delims=/ " %%a in ('dir %%a /t:w^|find "/"') do (
ren %%a "3DC-test-OFF-ELE-%myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-TIME-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2%~x1")
PAUSE
GOTO :EOF
于 2016-09-29T00:30:07.367 回答