2016-12-22 8 views
0

私は、このようなコマンドを持っている場合:チェック入力は、ファイルやフォルダ

set /p txtfile=Write destination to the .txt file: 

今私は、ファイルが本当に存在するかどうかを知る必要があります。

if exist %txtfile% echo file found. 

それは動作しますが、もしユーザーが私にC:\を書き込むと、 "ファイルが見つかりました"と表示されます。 バッチ、任意のアイデアを使用してファイル拡張子を知る方法はありますか?

+0

これはファイル拡張子と何が関係しているのか分かりません。私は、ユーザーTHA必要 – Squashman

+0

は.txtファイルに私に先を書き、そして私はそれだけで –

答えて

0

:拡張、あなたはforループを使用することができますTYPEを使用してファイルを作成します。しかし、それが大きなファイルの場合は、最良の方法ではないかもしれません。

SET "DIR_ITEM=C:\Windows" 

TYPE "%DIR_ITEM%" 1>NUL 2>&1 
IF ERRORLEVEL 1 (
    ECHO "%DIR_ITEM%" is not a file 
) ELSE (
    ECHO "%DIR_ITEM% is a file 
) 
0
pushd C:\ && (Echo Is a folder & popd) || Echo Is a file or doesn't exist 2>nul 

&&if not errorlevel 1if errorlevel 1同じ||と同じです。 2>nulエラーメッセージを非表示にします。括弧は、コマンドをグループ化することによって、行が確実に実行されるようにします。 Pushdは、0以外の指定したディレクトリに変更できない場合は、errorlevel1と設定します。

Command to run a .bat file

ここで私のコマンドカンニングペーパーを参照してください
+0

とにかく私は自分自身に答えを見つけたフォルダではないことを確認する必要があります、あなたが望むかもしれない使用「タイプ」コマンドLOL –

+2

HackR_360 @あなた自身の質問への答えを提供する... – aschipfl

3

私はあなたが(ディレクトリはまた、拡張子を持つことができることに注意してください)与えられたアイテムを既存のファイルではなくディレクトリであるかどうかを知りたいと仮定します。あなたが本当に存在するか否かを指定したアイテムの名前を確認したい場合は

if exist "file.ext" if not exist "file.ext\" echo This is a file but not a directory. 

if exist "file.ext" (
    if exist "file.ext\" (
     echo The given item is a directory. 
    ) else (
     echo The given item is a file. 
    ) 
) else (
    echo The given item does not exist. 
) 

やショートで:ファイルとディレクトリを区別するために、末尾\を使用しますあなたのようにそれを識別することができます

for %%I in ("file.ext") do (
    if not "%%~xI"=="" (
     echo The given item has got the extension "%%~xI". 
    ) 
) 
関連する問題