2016-11-02 26 views
1

を経由して単一ファイルのファイル名にスペースとアンダースコアを交換し、私は以下の記事を見つけた: Batch File to replace underscores with spaces in a filenameバッチ

これは動作するようですが、あなたは、バッチファイルにファイルをドラッグすると、それは内のすべてのファイルを処理しますフォルダ。

@echo off 
setlocal enabledelayedexpansion 
for %%a in (*_*) do (
    set file=%%a 
    ren "!file!" "!file:_= !" 
) 

私はバッチファイルに名前を変更し、ちょうどそのファイルの名前を変更したいだけのファイルをドラッグするだけでできますので、これを編集する方法はありますか?

私はまた、1つのファイルだけの名前を変更するための素晴らしい作品は、このリンクを見つけたが、それは私が何をしようとしているのと反対のことを行います。 Renaming files with spaces and dots in the filename

@ECHO OFF &setlocal 

FOR %%f IN (%*) DO (
set "oldname=%%~ff" 
set "oldfname=%%~nf" 
set "extension=%%~xf" 
setlocal enabledelayedexpansion 
set "filename=!oldfname:.=_!" 
set "filename=!filename: =_!" 
if not "!filename!"=="!oldfname!" RENAME "!oldname!" "!filename!!extension!" 
endlocal 
) 

ありがとうございました!

-Thom K.

+0

を。バッチファイルは '%1'と表示されます。環境変数に '%1'を設定し、その変数に文字列置換を使用してください。 – Squashman

+0

あなたはコードを作業しているので、必要に応じてサブストリングの置換を適応させるのは難しくありません。スクリプトが最初に渡された項目だけを気にするようにするには、 '%*'を ''%〜1 "'で置き換えてください... – aschipfl

+0

ありがとう! 私は – ThomK

答えて

0

あなたはおそらく構造にこれらの線に沿って何か必要があります:あなたは、バッチファイルにファイルをドラッグした場合、それはバッチファイルの引数になり

@Echo Off 
Set file=%~nx1 
If Not Defined file Exit/B 
Set "locn=%~dp1" 
If Not Exist "%locn%%file%" Exit/B 
If Not Exist "%locn%%file:_= %" (Ren "%locn%%file%" "%locn%%file:_= %") 
+2

ドラッグアンドドロップすると、完全なパスがファイル名の一部であることに注意してください。ファイル名の名前を変更したいだけです。誤ってファイルパスの文字を変更することがあります。 nxを使用してファイルを設定し、名前を変更して%1を使用します。 – Squashman

+0

ありがとう、@スカッシュマンは修正しました。 – Compo