@Echo OFF
SET FilePath=%1
SET HeaderFilePath=%2
SET RetrunCode="0"
Call :sub %FilePath% exit /b
:sub SET FileName=%~n1
SET FilePath=%1
SET "FileType=.zip"
CALL SET "ZipType=%%FilePath:%FileType%=%%"
if "%Ext%"==".zip" (goto Function1) else Goto Function2
:Function1
Echo File is zipped
:Function2
Echo File is not zipped
pause
** Mam miejsce powyżej kodu w test.bat i przeszedłem poniżej wspomnianego parametru
C: \ Users \ ak813708> C: \ Users \ abhay \ Desktop \ test1.bat
C: \ Users \ abhay \ Desktop \ doc1.zip C: \ Users \ abhay \ Desktop \ header.txt, ale niezależnie od pliku pierwszego parametru wpisz jego funkcję wywołującą2. **
windows
command-line
batch
batch-file
abhayk
źródło
źródło
%~x1
- Rozwiń tylko%1
do rozszerzenia eXtensionfor /?
powie ci, co robi% ~ xI.Odpowiedzi:
Zachęcam więc do korzystania z
%~dp
operatora zamiast samego%~p
operatora. Aby uzyskać pełną listę operatorów plików i sposób ich użycia, użyjFOR /?
w wierszu polecenia - jest na samym końcu sekcji.Coś takiego jak poniżej powinno zapewnić ci bardziej przewidywalny kod, który zapewnia niewielką elastyczność w akceptowaniu nazw plików w wierszu poleceń.
źródło
if
błąd otrzymujesz teraz ...Jak uzyskać rozszerzenie pliku, podając parametr wiersza polecenia?
Możesz uzyskać rozszerzenie pliku, używając:
%~x1
- Rozwiń tylko%1
do pliku eXtension.Możesz więc użyć czegoś takiego:
Dalsza lektura
źródło
Zmodyfikowałem moją partię w ten sposób ... Teraz przetwarzane są zarówno zdalne serwery, jak i lokalne ścieżki pulpitu, a JEŻELI instrukcja działa doskonale
źródło
goto :eof
rozwiązania, to. Lepszym rozwiązaniem byłobyreturn
kod, ponieważ wywołujesz funkcję (call : sub
a potem masz natychmiastEXIT /b
.