Windows cmdでファイル名を変更しながらファイル名の先頭の文字を省略する方法は?


5

Windowsでファイルの名前を変更するときに、ファイル名の最初の文字を省略する方法を知りたいcmdです。

私の場合、次のようなファイルがたくさんあります。

#test1.txt
#test2.txt
#test3.txt
#test4.txt
#test5.txt

私は次のようなcmdプロンプトのすべてのファイルの名前を変更したい

test1.txt
test2.txt
test3.txt
test4.txt
test5.txt

ファイルはにありc:\myfiles\ます。


PowerShellを使用してそうすることを検討しましたか?とても簡単です!
Ob1lan

2
「DOS」とは、Microsoft Windowsのコマンドライン(cmd.exe)のことですか?(MS-DOS -Microsoftディスクオペレーティングシステムは、約20年間一般的に使用されていない古い、シンプルなオペレーティングシステムです。)
pabouk

1
あなたがコマンドに精通していない場合は、同様にGUIソフトウェアとのファイルの名前を変更する別のオプションがありckrename
Bilo

3
OPは特にDOSと述べました。それが意図されたものではないことを前提とする前に、OPから明確化を取得しましょう。
CVn

2
OPはMS-DOSを使用していない(おそらくどちらも使用していない)に違いない。
カラン

回答:


3

私は数ヶ月前にこのような同様の問題に直面しました。DOSを使用すると、ファイル名の先頭の文字を削除するのが少し難しいことがわかりました。このサイトに出会ったのですが、これには良い解決策がありました。

必要なことはcd、ファイルを含むディレクトリに移動して、これらの2つのコマンドを実行することだけです。

REN *.* " *.*" 
FOR %v IN (*.*) DO REN "%v" %v

これにより、すべてのファイル名の最初の文字が置き換えられます。

最初のRENコマンドを使用して不要な文字の数をスペースに置き換え、FORループとRENコマンドを使用してこのスペースを削除します。


これを試しましたか?DOSで何かをしてからしばらく経ちましたが、思い出したように、持っていなかったことの1つはコマンドパラメーターの引用でした。Windows 95はLFNをサポートしているためと思われますが、以前のバージョンのMS-DOSコマンドインタープリターにはないと思います。ただし、サードパーティのコマンドインタープリター(4DOSなど)は、このようなものをサポートしている可能性があります。
CVn

@MichaelKjörling:はい、投稿する前に、Windows 95の仮想セットアップで一度試しました。そのLFNサポートについては、Win 95でyesがサポートされているため、これが機能しました。しかし、私がこれを入手したサイトはLFNFOR Onforコンストラクトを実行する前に使用する必要があると述べており、古いバージョン用でなければなりません。Win 95は私が手にした最古のものなので、古いバージョンについては何も言えません。
アヤン

確かに言うことはできません(今はDOS VMにアクセスできません)が、あなたが提案しているものはWindows 95では動作するかもしれませんが、DOSでは動作しません(6.22以降) 。私は可能性がある MS-DOS VM実際今夜プロビジョニングすることができ、実際のソフトウェアでこれを試してみてください。
CVn

@MichaelKjörling:おそらく、古いバージョンでは動作しない可能性があります。実際のソフトウェアでチェックアウトするので、私が言及したそのサイトを見て、そのLFNFORオプションをチェックアウトしてください。私に知らせてください、これが古いバージョンで動作するかどうかを調べるのも少し興味があります。
アヤン

1
バッチファイルでこれを行う場合には、二パーセント記号を使用することを覚えてFOR %%v IN (*.*) DO REN "%%v" %%vくださいstackoverflow.com/questions/11249339/...
キース・

3

このための複雑なスクリプトは忘れてください。

rename非常に古いコマンドであり、適切に完成することはありません。適切に使用しないと、結果が驚くかもしれません。

たとえば、プレフィックスを削除するabcdからabcd1.txtabcd2.txtabcd3.txtなど、取得するために1.txt2.txt3.txt、単に入力

rename "abcd*.txt" "////*.txt"

/削除する最初の文字の数と同じ数が必要です。

両方の引数に二重引用符を使用してください。

別のスレッドの誰かから上記をコピーしました。

これは、スペースを含むファイル名を正しく処理することに注意してください。


1

Andrew Ionの投稿を拡大します。エレガントでシンプルですが、コマンドの柔軟性を完全には説明していません。

次の3つのように、特定の種類のファイルに数字のプレフィックスを付けて頻繁に名前を付けます(数字を読みやすくするためにプレフィックスを角かっこで囲みます)。

[#001] Aardvark.txt

[#002] Badger.txt

[#003] Civet.txtなど

プレフィックスを削除する場合(スペースを含む最初の7文字を削除する)、次のように入力できます。

ren "[#???] *.txt" "///////*.txt"

これは、[#で始まり、]と6番目と7番目の文字としてスペースを持ち、.txtで終わるファイルのみを名前変更します。このコマンドは、上記のファイルの名前をAardvark.txtBadger.txtCivet.txtなどに変更します。

数値の接頭辞ののファイル名が一意でない場合(たとえば[#001] Aardvark.txtおよび[#002] Aardvark.txt)、コマンドはファイルの1つのみを名前変更し、もう一方の名前変更をスキップして応答することを認識しますエラー:「重複したファイル名が存在するか、ファイルが見つかりません。

そのため、コマンドを実行する前に、各ファイルにプレフィックスのない一意の名前があることを確認してください。

また、ほとんどの(良い)名前変更プログラムでは、変更を適用する前に新しいファイル名がどのよう見えるかをプレビューできますが、この名前変更コマンドを使用すると、Enterキーを押すとすぐにファイル名が変更されます。そのため、ファイルの名前を変更するに、ファイルのコピーを作成することを常にお勧めします。名前の変更が期待どおりに機能する場合は、元の名前のファイルを削除できます。そうしないと、非常に間違ったファイル名になってしまい、元の名前に戻す方法がありません(バックアップがない限り)。あなたは警告を受けました!:-)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.