0

拡張子のない複数のファイルにファイル拡張子を挿入する方法 (filename から filename.txt へ)、および誤った拡張子を修正する方法 (たとえば、誤って保存された .txt から .jpg へ) をグーグル検索してきました。この名前変更プロセスから他のファイル/フォルダーを除外するだけでなく。

特につまずいた 1 つのページは、私のものと非常によく似ています: http://ubuntuforums.org/showthread.php?t=1185203

このスレッドの 2 ページ目に、tinge によって投稿されたスクリプトがあります。これは、私が探しているソリューションのようです (誰かがこれを確認できますか?)。


#!/bin/bash
program () {
    FILETYPE="$1"
# Select all files in current directory, and process one at a time
for FILE in *; do
    # Strip of any extension, and save to FILE1
    FILE1=${FILE%\.*}

    # If it's the same afterward, then there was no extension - rename it
    if [ "$FILE1" = "$FILE" ]; then
    while [ -f "${FILE1}.${FILETYPE}" ] ; do
        FILE1="${FILE1}_1"
    done
        mv "$FILE" "$FILE1.$FILETYPE"
    fi
done
exit 0
}

case $1 in
    --help)   echo;echo;echo "Usage: noext.sh filetype i.e. noext.sh JPG changes all     files with no extension to a .JPG";echo;echo;echo
    ;;
    -h)   echo;echo;echo "Usage: noext.sh filetype i.e. noext.sh JPG changes all files     with no extension to a .JPG";echo;echo;echo
    ;;
    *) program $1
    ;;
esac

正しくコピーされたかどうかはわかりませんが (4 スペースのインデント規則に従おうとしました.. ぶち壊したと思います笑)、投稿したスレッドのリンクの 2 ページ目にあります。スクリプトに慣れていないため、処理方法がわかりません。

Windows 7 を使用しています。

誰か助けてくれませんか?

ありがとう、-B

4

1 に答える 1

0

ご覧のとおり、このスクリプトは次の行で始まります。

#!/bin/bash

つまり、UNIX 環境では、そのスクリプトを bash バイナリで実行する必要があります。ただし、Windows 7 には bash がプリインストールされていません。Windows スクリプトと Unix スクリプトはほとんど同じものですが、異なる言語で記述されており、通常は相互に理解できません。

cmd.exeおそらく、Windows の組み込みシェルであるWindows 用のこのスクリプトのバージョンが必要になるでしょう。

それ以外の場合、実際にこの特定のファイルを実行したい場合は、コンパイル済みの bash バージョン (MinGW、Cygwin、Git などのツールに付属するものなど) をインストールできます。

ファイルの名前を変更するだけの場合は、この回答またはこの他の質問への回答で提供されているツールなど、他のツールを使用するとうまくいく可能性があります

于 2013-01-28T00:57:05.960 に答える