Làm cách nào để tách tên tệp ra khỏi đường dẫn đầy đủ trong tập lệnh theo lô?Làm cách nào để tách tên tệp khỏi một đường dẫn đầy đủ theo lô?
Trả lời
@echo off
Set filename=C:\Documents and Settings\All Users\Desktop\Dostips.cmd
For %%A in ("%filename%") do (
Set Folder=%%~dpA
Set Name=%%~nxA
)
echo.Folder is: %Folder%
echo.Name is: %Name%
Nhưng tôi không thể lấy tín dụng cho điều này; Google tìm thấy này tại http://www.dostips.com/forum/viewtopic.php?f=3&t=409
Cảm ơn ! Điều này cũng làm việc cho tôi. Tôi đang đọc trong danh sách các thư mục từ một tệp và định dạng chúng. Tôi đã sử dụng điều này: "for/F" tokens = 1 delims = "%% A in (list_of_files.txt) do (" –
Có thể đẹp để chỉ cách lấy tên tệp. (Không có phần mở rộng.) – Vaccano
% ~ nI - chỉ mở rộng% I thành một tên tập tin <- được lấy trực tiếp từ đầu ra DOS "for -help" –
Tôi không biết nhiều về tệp lô nhưng bạn không thể sao chép tệp hàng loạt được tạo trước từ thư mục chính sang đường dẫn bạn sẽ trả về danh sách tên tệp rồi sử dụng Tên?
Đây là liên kết tôi nghĩ có thể hữu ích khi tạo tệp hàng loạt được tạo sẵn.
@echo off
Set filename="C:\Documents and Settings\All Users\Desktop\Dostips.cmd"
call :expand %filename%
:expand
set filename=%~nx1
echo The name of the file is %filename%
set folder=%~dp1
echo It's path is %folder%
Tiếp tục từ ví dụ của Pete trên, để làm điều đó trực tiếp trong cửa sổ cmd, sử dụng một đơn %
, ví dụ:
cd c:\test\folder A
for %X in (*)do echo %~nxX
(Lưu ý rằng các file đặc biệt như desktop.ini sẽ không hiển thị)
Nó cũng có thể chuyển hướng đầu ra vào một tập tin sử dụng >>
:.
cd c:\test\folder A
for %X in (*)do echo %~nxX>>c:\test\output.txt
Đối với một ví dụ thực tế, giả sử bạn muốn Robocopy tất cả file từ thư mục-A vào thư mục B (không đệ quy):
cd c:\test\folder A for %X in (*)do robocopy . "c:\test\folder B" "%~nxX" /dcopy:dat /copyall /v>>c:\test\output.txt
và cho tất cả thư mục (đệ quy):
cd c:\test\folder A for /d %X in (*)do robocopy "%X" "C:\test\folder B\%X" /e /copyall /dcopy:dat /v>>c:\test\output2.txt
Trong khi sử dụng điều này tôi vừa phát hiện ra nếu bạn sử dụng các kỹ thuật này với robocopy, bạn cũng cần phải nhớ để loại bỏ dấu gạch chéo ngược cuối cùng trong thư mục mã nguồn sẽ hữu ích nếu có một ví dụ sử dụng '% ~ dpX' làm nguồn. – Annan
Phân tích cú pháp filename từ tên đường dẫn đầy đủ (ví dụ: c: \ temp \ my.bat) cho bất kỳ thành phần (ví dụ, file.ext).
dòng mã:
For %%A in ("C:\Folder1\Folder2\File.ext") do (echo %%~fA)
Bạn có thể thay đổi ra "C: \ folder1 \ folder2 \ file.ext" cho bất kỳ đường dẫn đầy đủ và thay đổi "%% ~ fA" cho bất kỳ tùy chọn nào khác bạn sẽ tìm thấy bằng cách chạy "for /?" tại dấu nhắc lệnh.
xây dựng Mã
set "filename=C:\Folder1\Folder2\File.ext"
For %%A in ("%filename%") do (
echo full path: %%~fA
echo directory: %%~dA
echo path: %%~pA
echo file name only: %%~nA
echo extension only: %%~xA
echo expanded path with short names: %%~sA
echo attributes: %%~aA
echo date and time: %%~tA
echo size: %%~zA
echo drive + path: %%~dpA
echo name.ext: %%~nxA
echo full path + short name: %%~fsA)
hàng loạt độc Script
Save as C: \ cmd \ ParseFn.cmd.
Thêm C: \ cmd-PATH biến môi trường của bạn và sử dụng nó để lưu trữ tất cả các bạn các kịch bản hàng loạt tái sử dụng.
@echo off
@echo ::___________________________________________________________________::
@echo :: ::
@echo :: ParseFn ::
@echo :: ::
@echo :: Chris Advena ::
@echo ::___________________________________________________________________::
@echo.
::
:: Process arguements
::
if "%~1%"=="/?" goto help
if "%~1%"=="" goto help
if "%~2%"=="/?" goto help
if "%~2%"=="" (
echo !!! Error: ParseFn requires two inputs. !!!
goto help)
set in=%~1%
set out=%~2%
:: echo "%in:~3,1%" "%in:~0,1%"
if "%in:~3,1%"=="" (
if "%in:~0,1%"=="/" (
set in=%~2%
set out=%~1%)
)
::
:: Parse filename
::
set "ret="
For %%A in ("%in%") do (
if "%out%"=="/f" (set ret=%%~fA)
if "%out%"=="/d" (set ret=%%~dA)
if "%out%"=="/p" (set ret=%%~pA)
if "%out%"=="/n" (set ret=%%~nA)
if "%out%"=="/x" (set ret=%%~xA)
if "%out%"=="/s" (set ret=%%~sA)
if "%out%"=="/a" (set ret=%%~aA)
if "%out%"=="/t" (set ret=%%~tA)
if "%out%"=="/z" (set ret=%%~zA)
if "%out%"=="/dp" (set ret=%%~dpA)
if "%out%"=="/nx" (set ret=%%~nxA)
if "%out%"=="/fs" (set ret=%%~fsA)
)
echo ParseFn result: %ret%
echo.
goto end
:help
@echo off
:: @echo ::___________________________________________________________________::
:: @echo :: ::
:: @echo :: ParseFn Help ::
:: @echo :: ::
:: @echo :: Chris Advena ::
:: @echo ::___________________________________________________________________::
@echo.
@echo ParseFn parses a fully qualified path name (e.g., c:\temp\my.bat)
@echo into the requested component, such as drive, path, filename,
@echo extenstion, etc.
@echo.
@echo Syntax: /switch filename
@echo where,
@echo filename is a fully qualified path name including drive,
@echo folder(s), file name, and extension
@echo.
@echo Select only one switch:
@echo /f - fully qualified path name
@echo /d - drive letter only
@echo /p - path only
@echo /n - file name only
@echo /x - extension only
@echo /s - expanded path contains short names only
@echo /a - attributes of file
@echo /t - date/time of file
@echo /z - size of file
@echo /dp - drive + path
@echo /nx - file name + extension
@echo /fs - full path + short name
@echo.
:end
:: @echo ::___________________________________________________________________::
:: @echo :: ::
:: @echo :: ParseFn finished ::
:: @echo ::___________________________________________________________________::
:: @echo.
- 1. Làm cách nào để tách đường dẫn đầy đủ thành thư mục và tên tệp?
- 2. Tìm tên tệp từ đường dẫn tệp đầy đủ
- 3. Làm cách nào để lấy tên tệp từ đường dẫn đầy đủ bằng PHP?
- 4. Cách đúng để tìm tệp theo "đường dẫn đầy đủ" trong API Google Drive v2
- 5. xây dựng tên đường dẫn đầy đủ trong python,
- 6. Làm cách nào để chỉ lấy tên lớp, không phải đường dẫn đầy đủ?
- 7. Đường dẫn đầy đủ của tệp Xcode 4
- 8. Đường dẫn đầy đủ từ đầu vào tệp bằng jQuery
- 9. Làm cách nào để lấy thư mục từ đường dẫn đầy đủ của tệp?
- 10. Nhận đường dẫn đầy đủ của các tệp trong PowerShell
- 11. Mở tệp theo đường dẫn đầy đủ của nó trong C++
- 12. Trình phân tách tệp của tên Đường dẫn của ZipEntry?
- 13. đường dẫn tách và lấy tên thư mục cuối cùng trong tập lệnh theo lô
- 14. Nhận đường dẫn tệp đầy đủ trong java
- 15. Làm cách nào để chuyển đổi đường dẫn đầy đủ sang đường dẫn tương đối bằng cách sử dụng perl?
- 16. PHP: xóa tên tệp khỏi đường dẫn
- 17. Xóa đường dẫn khỏi tên tệp
- 18. ASP.NET MVC - làm cách nào để có được đường dẫn đầy đủ đến một hành động
- 19. Cách xem đường dẫn đầy đủ của một tệp trong GDB?
- 20. Cách lấy đường dẫn đầy đủ của StreamWriter
- 21. Liệt kê tất cả các tệp trong một thư mục - đường dẫn đầy đủ của tệp
- 22. Tìm chỉ in tên tệp, chứ không phải đường dẫn đầy đủ
- 23. Tìm phần thư mục (trừ tên tệp) của đường dẫn đầy đủ trong truy cập 97
- 24. Làm cách nào để đặt hàng theo họ trên một tên đầy đủ?
- 25. Hiển thị đường dẫn đầy đủ của tên tệp trong các tab ~ Netbeans 6.8
- 26. Làm thế nào để có được đường dẫn đầy đủ cho một đối số dòng lệnh tên tập tin?
- 27. Cách nén thư mục không có đường dẫn đầy đủ
- 28. Làm thế nào để tạo nhiều thư mục từ một đường dẫn đầy đủ trong C#?
- 29. lấy tên đầy đủ của một assembly
- 30. tách khỏi điểm dừng đầy đủ trong java
thể trùng lặp của [Extract đường hàng loạt và tên tập tin từ một biến] (http://stackoverflow.com/questions/15567809/batch-extract-path-and-filename-from-a-variable) – Gab