2009-05-01 8 views

答えて

1

、あなたが使用することができます。

@echo off 
setlocal EnableDelayedExpansion 

REM loop over all files in the cwd 
for /f %%a in ('dir /a-d /b') do (
    REM store this filename in a variable so we can do substringing 
    set ThisFileName=%%a 
    REM now take a substring 
    set ThisShortFileName=!ThisFileName:~0,255! 
    REM finally, the rename: 
    echo ren %%a !ThisShortFileName! 
) 


:EOF 
endlocal 

(注:私は、renameコマンドの前にエコーを追加しただけので、あなたが視覚的にそれが実際に前に機能するかどうかを確認することができますそれを実行している。私のボックス上で動作します。)

私は今の* nixのボックス上にある、誰かがbashのために同様のスクリプトを作ることができると確信しているが、私は、Windowsの世界でこだわっている:)

幸運!

Daveのsedのベースのバージョンと同様に

for f in *; do mv $f ${f:0:255}; done

が、ファイルごとのexecを回避:シェルが、それはPWDだとしてNTFSディレクトリに座っていると仮定すると

+0

これはうまくいったが、ファイル名は255文字にカウントされたので、ファイル名をさらに短くしなければならなかった。 –

0
$ cat truncname 
#!/bin/bash 
# requires basename, dirname, and sed 
mv $1 `dirname $1`/`basename $1 | sed 's/^\(.\{0,255\}\).*/\1/'` 
$ chmod a+x truncname 
$ find . -exec ./truncname {} \; 
+0

私は、フォルダ上でシェルスクリプトを実行しようとしたと、次のエラーを得た: プロンプト:/メディア/ DUALOS $ SH〜/ truncname.shもの /home/username/truncname.sh:1:$:見つかりません。 mv: 'stuff 'を' ./stuff/stuff'のサブディレクトリに移動できません /home/username/truncname.sh:5:$:見つからない /home/username/truncname.sh:6:$ :見つからない –

1

。最大のコマンドライン制限のために本当に巨大なdirで爆破され、サブディレクトリを実行しません。

関連する問題