Hãy để tôi lấy làm ví dụ một câu hỏi mà tôi thấy thú vị:Hợp nhất các tệp pdf với tên tệp liên quan
Trong câu hỏi này, tôi đã cố gắng trả lời thành công một phần vì nó đã cập nhật câu hỏi với nhiều thông tin hơn.
Tóm lại vấn đề là một thư mục có nội dung sau:
123456_ABCD.pdf
123456_EFGH.pdf
123456_IJKL.pdf
111111_ABCD.pdf
111111_EFGH.pdf
222222_IJKL.pdf
222222_WXYZ.pdf
chỉ huy VÌ
, Tôi muốn nhận được kết quả như thế này:
123456_ABCD.pdf, 123456_EFGH.pdf, 123456_IJKL.pdf
111111_ABCD.pdf, 111111_EFGH.pdf
222222_IJKL.pdf, 222222_WXYZ.pdf
Mỗi dòng ở đây phải thể hiện lệnh for
Tiền tố tương tự được tìm thấy trong
Đây là những gì tôi đã thử:
@echo off
(
sao chép số 123456_ABCD.pdf
sao chép nul 123456_EFGH.pdf
sao chép nul 123456_IJKL.pdf
sao chép số 111111_ABCD.pdf
sao chép nul 111111_EFGH.pdf
sao chép nul 222222_IJKL.pdf
sao chép nul 222222_WXYZ.pdf
)
mở rộng kích hoạt setlocal
::đặt _pdffiles=
set_prevfiles=
for /f "delims=" %%i in ('dir /b /ad /o:n "??????_????.pdf"') làm (
đặt "tệp=%%nxi"
if "!files:~0,6!" neq "!_prevfiles:~0,6!"
đặt "_prevfiles=%%i"
đặt _pdffiles=!_pdffiles!
đặt "_outputpdf=%%~ni"
) else (
set_prevfiles=
đặt _pdffiles=
)
echo pdftk.exe !_pdffiles đầu ra mèo "!_outputpdf:~0,6!.pdf"
)
Nhưng điều này mang lại cho tôi kết quả:
pdftk.exe "111111_ABCD.pdf" đầu ra mèo "111111.pdf"
pdftk.exe "111111_ABCD.pdf" "111111_EFGH.pdf" đầu ra mèo "111111.pdf"
pdftk.exe "111111_ABCD.pdf" "111111_EFGH.pdf" "123456_ABCD.pdf" đầu ra mèo "123456.pdf"
pdftk.exe "111111_ABCD.pdf" "111111_EFGH.pdf" "123456_ABCD.pdf" "123456_EFGH.pdf" đầu ra mèo "123456.pdf"
pdftk.exe "111111_ABCD.pdf" "111111_EFGH.pdf" "123456_ABCD.pdf" "123456_EFGH.pdf" "123456_IJKL.pdf" đầu ra mèo "123456.pdf"
pdftk.exe "111111_ABCD.pdf" "111111_EFGH.pdf" "123456_ABCD.pdf" "123456_EFGH.pdf" "123456_IJKL.pdf" "222222_IJKL.pdf" đầu ra mèo "222222.pdf"
pdftk.exe "111111_ABCD.pdf" "111111_EFGH.pdf" "123456_ABCD.pdf" "123456_EFGH.pdf" "123456_IJKL.pdf" "222222_IJKL.pdf" "222222_WXYZ.pdf" đầu ra mèo "222222.pdf"
Tôi đã tìm kiếm các ví dụ tương tự nhưng tôi chưa tìm ra cách tránh điều này.
ps: nếu ai có thể tìm thấy gợi ý tiêu đề hay xin vui lòng :)
tắt tiếng vang
setlocal EnableDelayedExpansion
đặt "danh sách ="
for /F "tokens=1,2 delims=_" %%a in ('dir /B *.pdf') làm (
if "!last!" neq "%%a" (
nếu được xác định danh sách echo pdftk.exe !list:~2!
đặt "danh sách ="
đặt "cuối cùng=%%a"
)
đặt "list=!list!, %%a_%%b"
)
echo pdftk.exe !list:~2!
Tôi là một lập trình viên xuất sắc, rất giỏi!