1

コマンド プロンプトで次のようにFORコマンドを使用して、Windows ディレクトリに存在するすべてのファイルの名前を変更しようとしています。

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

たとえば、これはファイルenc1.ctltestenc1.ctl enc2.ctl からtestenc2.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

バッチで可能かどうかはわかりませんが、この原始的な言語を習得したことはありません... :-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 に答える
1

ファイルの数 (たとえば 10) がわかっている場合は、次のように使用できます。

for /L %1 in (1,1,10) do ren enc%1.ctl test%1.ctl
于 2008-10-10T14:03:27.393 に答える
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 に答える