2016-12-22 5 views
0

У меня есть команда, как это:Проверьте входной файл или папка

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

Теперь мне нужно знать, если файл существует на самом деле так:

if exist %txtfile% echo file found. 

это работает, но если пользователь пишет мне C: \ он отобразит «файл найден». Я хочу знать, есть ли способ узнать расширение файла, используя партию, любые идеи?

+0

Я не понимаю, как это связано с расширениями файлов. – Squashman

+0

Мне нужно, чтобы пользователь записывал мне пункт назначения в .txt-файл, и мне нужно проверить, что это не просто папка –

ответ

0

вы можете определить его как файл с использованием 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 1|| же, как if errorlevel 1. 2>nul скрыть сообщения об ошибках. Скобки гарантируют, что строка выполняется, как я хочу, группируя команды. Pushd устанавливает errorlevel в 1, если он не может измениться в указанную директорию иначе 0.

Смотрите мою команду шпаргалку здесь Command to run a .bat file

+0

в любом случае я нашел ответ: используйте команду «type» LOL –

+2

@ HackR_360, вы можете захотеть дать ответ на свой вопрос ... – aschipfl

3

Я предполагаю, что вы хотите знать данный предмет является ли существующий файл, но не является каталогом (обратите внимание, что каталоги могут также иметь расширение). Используйте завершающую \ различать между файлом и каталогом:

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. 
) 

Или короче:

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

Если вы действительно хотите, чтобы проверить имя данного элемента или нет есть расширение, вы могли бы использовать for цикл:

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