Thay thế văn bản trong tệp văn bản thuần tuý từ dòng lệnh

Mục lục:

Thay thế văn bản trong tệp văn bản thuần tuý từ dòng lệnh
Thay thế văn bản trong tệp văn bản thuần tuý từ dòng lệnh

Video: Thay thế văn bản trong tệp văn bản thuần tuý từ dòng lệnh

Video: Thay thế văn bản trong tệp văn bản thuần tuý từ dòng lệnh
Video: Cách kiểm tra windows Bản Quyền trên máy tính - YouTube 2024, Có thể
Anonim

Một hàm rất hữu ích bị thiếu trong thư viện Windows của các công cụ dòng lệnh là khả năng thay thế văn bản trong các tệp văn bản thuần túy. Một chức năng như thế này có thể được sử dụng cho một loạt các nhiệm vụ thực tế mà nhiều quản trị viên hệ thống thực hiện, chẳng hạn như:

  • Cập nhật các tệp cấu hình / INI để thay thế đường dẫn UNC.
  • Thông tin người dùng cập nhật hàng loạt được lưu trữ trong các tệp INI trên máy chủ Terminal / Citrix.

  • Sử dụng kết hợp với tập lệnh để triển khai dữ liệu ‘templated’ và sau đó áp dụng giá trị cho các tệp được sao chép.

Giải pháp của chúng tôi là một VBScript có giao diện với chức năng Visual Basic Replace. Bằng cách đặt tập lệnh này vào một vị trí trong biến Windows PATH của bạn, bây giờ bạn có sẵn chức năng này theo ý của bạn.

Sử dụng

Khi đã ở trên hệ thống của bạn, bạn có thể gọi kịch bản bằng cách sử dụng lệnh ReplaceText. Một vài ví dụ sẽ minh họa các cách bạn có thể sử dụng:

Thay thế từ “null” bằng “n / a” trong tệp C: DataValues.csv:

ReplaceText “C:DataValues.csv” null n/a

Quét tất cả các tệp INI trong thư mục C: Người dùng (+ thư mục phụ) thay thế tất cả các lần xuất hiện của "Máy chủ = Cũ" bằng "Máy chủ = Mới" bằng cách sử dụng tìm kiếm không phân biệt chữ hoa chữ thường:

FORFILES /P “C:Users” /M *.ini /S /C “Cmd /C ReplaceText @path Server=Old Server=New /I”

Quét tất cả các tệp CFG trong tiểu sử của người dùng hiện tại thay thế “p @ ssw0rd” bằng “PA $$ woRd” bằng cách sử dụng tìm kiếm phân biệt chữ hoa chữ thường:

FORFILES /P “%UserProfile%” /M *.cfg /S /C “Cmd /C ReplaceText @path p@ssw0rd PA$$woRd”

Như bạn có thể thấy bên dưới, kịch bản rất đơn giản và có thể dễ dàng sửa đổi để phù hợp với bất kỳ tình huống đặc biệt nào mà bạn có thể có. Ngoài ra, bạn có thể muốn tạo các bản sao của tập lệnh để mã hóa các giá trị cụ thể để bạn có thể thực hiện lệnh bằng cách nhấp đúp và / hoặc cho phép bạn dễ dàng phân phối nó cho người khác.

Kịch bản

'Replace Text 'Written by: Jason Faulkner 'SysadminGeek.com

'This script should be placed in a folder specified in your system's PATH variable.

'Usage (WScript): 'ReplaceText FileName OldText NewText [/I]

' /I (optional) - Text matching is not case sensitive

Set oArgs = WScript.Arguments

intCaseSensitive = 0 For i = 3 to oArgs.Count-1 If UCase(oArgs(i)) = '/I' Then intCaseSensitive = 1 Next

Set oFSO = CreateObject('Scripting.FileSystemObject')

If Not oFSO.FileExists(oArgs(0)) Then WScript.Echo 'Specified file does not exist.' Else Set oFile = oFSO.OpenTextFile(oArgs(0), 1) strText = oFile.ReadAll oFile.Close

strText = Replace(strText, oArgs(1), oArgs(2), 1, -1, intCaseSensitive)

Set oFile = oFSO.OpenTextFile(oArgs(0), 2) oFile.WriteLine strText oFile.Close End If

Ghi chú bổ sung

Theo mặc định, Windows sử dụng WScript để thực thi các tệp VBScript (VBS). Vấn đề duy nhất mà điều này có thể gây ra là bất kỳ lỗi và / hoặc thông báo nào từ tập lệnh sẽ xuất hiện dưới dạng hộp bật lên. Đối với một công cụ dòng lệnh, tốt nhất là những thông báo này được hiển thị trong bảng điều khiển. Có một vài cách bạn có thể thực hiện việc này.

Thay đổi trình xử lý mặc định của các tệp VBScript thành CScript bằng cách chạy lệnh này từ dấu nhắc lệnh (với quyền của Quản trị viên):

CScript //H:CScript

Chạy kịch bản ReplaceText một cách rõ ràng bằng cách sử dụng lệnh CScript:

CScript “C:PathToReplaceText.vbs” //B FileName OldText NewText [/I]

Như một trường hợp đặc biệt, việc thi hành ReplaceText từ một tập lệnh batch thường ngụ ý CScript là công cụ được sử dụng bất kể trình xử lý mặc định. Bạn chắc chắn sẽ muốn thử nghiệm điều này mặc dù trước khi dựa vào chức năng này.

Tải xuống ReplaceText Script từ SysadminGeek.com

Đề xuất: