0

私はコマンド プロンプト (Windows) にまったく慣れていませんが、いくつかのファイル拡張子を変更するためにコマンド プロンプトを使用しており、非常に役に立ちます。私はコーディングについて何も知らないので、読んだことから離れているだけですが、どこにも見つからないように見えるコマンドラインを探しています。フォルダーがあり、そのフォルダー内には、それぞれ 1 ~ 70 の番号でラベル付けされた 70 個のサブフォルダーがあります。これらのサブフォルダー内には、およそ 20 個の png 画像ファイルがあり、現在、png 形式で 1 ​​~ 20 の番号が付けられています。各ファイルの名前を元の名前から「フォルダー名(ページ番号).png」に変更するコマンドラインを探しています

たとえば、「68」というフォルダーがあり、そのフォルダー内には 1.png、2.png、3.png があります。コマンドラインでその 1.png と 2.png などを 68 (1).png と 68 (2) に変更する必要があります。png、ブラケットとフォルダー名の間のスペースに注意してください。混乱させて申し訳ありませんが、本当に感謝しています。以前に StackOverflow から非常に役立つ迅速な回答を得ました。

私はこの問題について完全に絶望的であるため、あなたが私を助けることができればありがとう.

4

3 に答える 3

1

これを 1 回だけ実行します。70 個のフォルダーを含むフォルダーから起動します。

@echo off
for /f "delims=" %%a in ('dir /ad /b') do (
pushd "%%a"
for /f "delims=" %%b in ('dir /a-d /b') do ren "%%b" "%%a (%%~nb)%%~xb"
popd
)
于 2013-04-27T09:50:12.680 に答える
0

@foxidriveが提案したアプローチをわずかに変更したため、スクリプトはどこからでも実行でき、dir出力を解析する必要はありません。

@echo off
for /r "C:\root\folder" %%d in (.) do (
  pushd "%%~fd"
  for %%f in (*) do ren "%%~ff" "%%~nd (%%~nf)%%~xf"
  popd
)

これは Windows XP では機能しないことに注意してください (Windows Vista についてはわかりません)。これは、ファイルの名前が複数回変更される*内部forループ内の の展開に関するバグのためです。

于 2013-04-27T11:46:57.147 に答える
0

私は経験豊富な bash スクリプト作成者ではありませんが、これで問題は解決すると思います。Linux オペレーティング システムを使用していると仮定しています。テキストエディタを開き、以下をコピーします。

#!/bin/bash

NumberOfFolders=70

for((a=1; a <= NumberOfFolders ; a++))
do
        cd ./$a
        b=1
        while [ -f $b.png ]
        do
                mv "$b.png" "$a($b).png"
                let b=b+1
        done
        cd ..
done

このスクリプトをフォルダー 1 ~ 70 がある場所に保存します (そして、whatever.ssh という名前を付けます)。次に、ターミナルを開いて書き留めchmod a+x whatever.ssh、その後に./whatever.ssh. これは、質問で提示したとおりに機能するはずです。

于 2013-04-27T06:31:32.467 に答える