1

調べてみましたがわかりませんでした、ごめんなさい!グーグルは私が文字を追加するのを助けることができるだけで、文字を削除することはできません...

dirの下で言うE:\Movies\2011\

いくつかのフォルダがあります。

[0603] Movie_1

[0708] Movie_2

[0811] Movie_3

等々..

だから私は日付タグを削除するためにバッチスクリプトを実行したい、すなわち

Movie_1

Movie_2

Movie_3

等々

私はWindows8を使用しています。

4

3 に答える 3

3

RENAMER.CMD

@echo off
setlocal enableextensions enabledelayedexpansion
for %%i in (*) do (set name=%%i && ren "!name!" "!name:~7!")
endlocal

説明:

setlocal / endlocalは、デフォルトのコマンドライン設定に関係なく、スクリプトが機能することを確認するだけです。コマンド拡張と遅延拡張がデフォルトで有効になっていることを確認する場合、またはcmd / e:on / v:onを使用してコマンドプロンプトを開始する場合、これらの行はオプションです。

forステートメントは物事の核心です。(*)を使用してディレクトリ内のすべてのファイルを選択します。特定の拡張子を持つファイルのみを変更したい場合は、(*。avi)などの別のパターンを使用できます。次に!name:〜7!前面から7文字を取ります。 セットする /?実行できる他の操作のいくつかをリストします。ほとんどの例では、 の代わりに%を使用しています。ただし、すべての文字列操作は両方で機能します。

コメントに答えるために更新

!内で%置換を実行できます。代用。

@echo off
setlocal enableextensions enabledelayedexpansion
set numtrim=7
for %%i in (*) do (set name=%%i && ren "!name!" "!name:~%numtrim%!")
endlocal
于 2013-03-11T23:39:27.933 に答える
0

拡張変数置換機能を使用して、これを行うことができます(SET /?詳細)。

@echo off
setlocal
for /d %%i in (*) do call :rename %%i
goto :eof
:rename
set CURDIR=%1
echo ren "%CURDIR%" "%CURDIR:~7%"

魔法はで起こり%CURDIR:~7%ます。これは、「の値です%CURDIR%が、最初の7文字をスキップする」ことを意味します。

上記のバッチファイルは名前を変更しないため(名前変更コマンドを出力するだけです)、最初にドライランを実行してから、最後のファイルを削除しechoて実際の作業を実行できます。

于 2013-03-11T23:30:38.490 に答える
0

Win8を使用しているため、PowerShellを使用してこれを実行することもできます。これが私が回したものです

blah11-1 blah12-1 blah13-1

blah11 blah12 blah13

C:\ tests> dir -Directory | foreach {if($ .Name.Length -gt 6){$ fileName = $ .Name.SubString(0,6)} else {$ fileName = $ .Name}; rename-item -path $ .fullname -newname $ fileName; }

これは、PowerShellコマンドラインで実行したものですが、スクリプトに移動して再利用しやすくすることができます。

于 2013-03-12T01:05:44.313 に答える