cho tôi biết lệnh thay thế trong DOS để làm theo lệnh unix


0
find /coe/informatica/v712_OMJ/AONE/SrcFiles/Archive -name *AccessOne_DF_BIFs.txt|cut -f8 -d "/"|cut -c 1-12 > /coe/informatica/v712_OMJ/AONE/TgtFiles/ExtendedAOneWeeklySource/WeeklyDeltaFileLoadIDList.dat

xin vui lòng cho tôi biết việc sử dụng

cut -f8 -d and -name *AccessOne_DF_BIFs.txt //this is a file name in unix box

1
Không có DOS! cmd.exe KHÔNG phải là DOS và đã không có từ lâu!
Joachim Sauer

Câu trả lời:


6

Re: việc sử dụng "cut -f8 -d" và "find -name"

cut -f8 -d "/"

Điều đó cung cấp cho bạn tám trường trong một chuỗi được phân tách bằng "/". Vì vậy, trên một chuỗi như "a / b / c / d / e / f / g / h / i / j" nó sẽ cung cấp cho bạn "h"

find /coe/informatica/v712_OMJ/AONE/SrcFiles/Archive -name *AccessOne_DF_BIFs.txt

Tùy chọn -name chỉ định mẫu phù hợp cho. Toàn bộ lệnh ở trên sẽ tìm kiếm đệ quy tất cả các tệp trong thư mục Lưu trữ kết thúc bằng "AccessOne_DF_BIFs.txt"

Đây là những gì toàn bộ lệnh thực hiện:

  • tìm / coe / informationatica / v712_OMJ / AONE / SrcFiles / Lưu trữ -name * AccessOne_DF_BIFs.txt - tìm đệ quy tất cả các tệp "AccessOne_DF_BIFs.txt" trong thư mục Lưu trữ
  • cắt -f8 -d "/" - Từ đầu ra của lệnh trước đó, trích xuất tám trường được giới hạn bởi "/"
  • cắt -c 1-12 - Chỉ trích xuất 12 ký tự đầu tiên
  • & gt; / coe - Viết kết quả vào tệp WeeklyDeltaFileLoadIDList.dat

Re: Thay thế Windows

Của tôi DOS-fu PowerShell-fu thiếu trầm trọng, vì vậy tôi không thể giúp bạn ở đó. Tuy nhiên, bạn có thể sử dụng các lệnh tương tự trên windows nếu bạn đã sử dụng Cygwin hoặc là MSYS . Tuy nhiên, xin lưu ý rằng các đường dẫn đến tệp của bạn sẽ khác khi được truy cập từ bên trong Cygwin / MSYS. Nếu bạn muốn sử dụng cấu trúc thư mục windows (ví dụ: thư mục C: \ my \ Windblows \), thì bạn có thể có cơ hội tốt hơn với MSYS.

~ Cập nhật ~

re: lệnh tương đương trong DOS

Có một chuyến đi trong thời gian nghỉ cà phê và điều này dường như làm việc cho tôi.

DOS-fu:

@echo off

:: Source directory
set SRCDIR="C:\coe\informatica\v712_OMJ\AONE\SrcFiles\Archive"
:: Pattern to match
set TARGET="*AccessOne_DF_BIFs.txt"
:: Set output file
set OUTFILE="C:\coe\informatica\v712_OMJ\AONE\TgtFiles\ExtendedAOneWeeklySource\WeeklyDeltaFileLoadIDList.dat"

:: Store current working directory so we can send user back
set PWD=%cd%
:: Move to source directory so our "dir" command will work
cd %SRCDIR%

:: Reset previous output file
del %OUTFILE%

:: This is where the script actually starts
FOR /F "usebackq tokens=8 delims=\" %%a IN (`dir %TARGET% /s/b`) DO (
    set X=%%a
    echo %X:~0,13%
) >> %OUTFILE%

:: Send user back to where he/she was
cd %PWD%

Không hoàn toàn là một lớp lót mà bạn có thể có với Unix 'find' và 'cut', nhưng nó hoàn thành công việc tương tự (tôi hy vọng) chỉ sử dụng các chỉ thị DOS tích hợp.

Vòng lặp FOR là công việc gì. Phần còn lại chủ yếu ở đó để làm cho kịch bản dễ đọc hơn.

Lưu ý rằng " tiếng vang% X: ~ 0,13% "không phải là một lỗi đánh máy và phải tương đương với" cắt -c 1-12 ".

Tôi cá là có những cách sạch sẽ và thanh lịch hơn để làm điều đó. Đây là nỗ lực đầu tiên của tôi tại DOS-fu nên rất tuyệt.

Nguồn:


1
Tiểu nitlog: Điều này không thể làm việc trong DOS. Nó đặc trưng cho dấu nhắc lệnh của Windows NT (cmd.exe).
Joey

4

Bạn có thể cài đặt một trong những gói unix-alike như Cygwin không?

Hoặc có thể cài đặt một ngôn ngữ kịch bản như Perl?

Liệu lệnh đó của bạn thực sự làm việc? Có thể thiếu một dấu ấn từ tìm thấy.

 find -name  xxx

tìm tên tập tin được chỉ định

 cut -f 8 -d "/"

chia thành các trường được phân tách bằng /, lấy cái thứ 8

Những thứ như vậy không được mượt mà trong dòng lệnh Windows thô, do đó khuyến nghị nên cài đặt một môi trường tập lệnh đẹp hơn.


3
Windows là không thể sử dụng mà không có cygwin. Làm thế nào một người có thể sống sót với các công cụ shell mạnh mẽ. Cá nhân tôi đã không chuyển sang Linux trong nhiều năm (tôi đã làm nó sau XP), nhưng từ lâu tôi đã sử dụng cygwin, công cụ rất quan trọng. Liên kết là cygwin.com

3

Để thay thế kiểu cắt trong lệnh DOS "help for"

nhìn vào cú pháp:

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

thay vào đó (myfile.txt) chỉ định * AccessOne_DF_BIFs.txt

để làm cho nó vòng lặp sử dụng đệ quy


2

Bạn có thể tìm thấy một cổng các tiện ích Unix phổ biến ở đây trên SourceForge (bao gồm tìm và cắt).

Không có cách nào khác để làm điều này trên Windows mà tôi biết.


0

đối với các cổng của công cụ * nix đến windows, hãy sử dụng các cổng từ GNU


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.