मुझे हाल ही में एक टेक्स्ट-रिप्लेसमेंट स्क्रिप्ट के साथ कुछ मदद मिली थी और सोचा कि क्या इसे पैचिंग उद्देश्यों के लिए इस्तेमाल किया जा सकता है। मैं आमतौर पर एचएक्सडी का उपयोग करता हूं , और सोचा कि यदि यह अनिवार्य रूप से एक गौरवशाली नोटपैड है, तो पाठ संपादक और हेक्स संपादक में एक निष्पादन योग्य संपादन के बीच क्या अंतर है? मैंने अपने सिद्धांत का परीक्षण करने का फैसला किया और स्क्रिप्ट को परीक्षण में डाल दिया, जबकि यह निर्दिष्ट तारों को बदल सकता है , यह निष्पादन योग्य में जानकारी जोड़ता है।
मुझे यहाँ क्या फेंकता है कि यदि इसका उपयोग टेक्स्ट डॉक्यूमेंट में टेक्स्ट को बदलने के लिए किया जाता है, तो यह केवल स्ट्रिंग्स को बदल देता है और डॉक्यूमेंट में बाइट्स नहीं जोड़ता है जब तक कि नया स्ट्रिंग पिछले वाले से अधिक लंबा न हो। मेरा मानना है कि यह इसलिए है क्योंकि स्क्रिप्ट पाठ दस्तावेज़ों को संपादित करने के लिए डिज़ाइन की गई है और इस वजह से हेडर को संशोधित करता है। मैंने पहले और बाद की तुलना करने के लिए एचएक्सडी का उपयोग किया और यकीन है कि हेडर को संशोधित किया गया है। इस समय मेरे पास स्क्रिप्ट है:
@echo off
setlocal enableextensions disabledelayedexpansion
set search=OutDir=Old String
set replace=OutDir=New String
set textFile=Document.txt
:PowerShell
SET PSScript=%temp%\~tmpStrRplc.ps1
ECHO (Get-Content "%~dp0%textFile%").replace("%search%", "%replace%") ^| Set-Content "%~dp0%textFile%">"%PSScript%"
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"
EXIT
(मेरे द्वारा प्रतिस्थापित किए जा सकने वाले तार समान आकार के होते हैं, इसलिए निष्पादन योग्य आकार अनलॉक हो जाएगा, और स्ट्रिंग भ्रष्टाचार का उपयोग नहीं किया जा रहा है।)
मैं यह नोट करना चाहूंगा कि मैं PowerShell में नया हूं, इसलिए मैं अभी भी सीख रहा हूं कि यह कैसे काम करता है। मैंने %~dp0%textFile%
चर देखा । यदि मैं इस चर की सही ढंग से व्याख्या कर रहा हूं, तो यह PowerShell स्क्रिप्ट को एक पाठ दस्तावेज़ के रूप में संशोधित की जाने वाली परिभाषित फ़ाइल को संभालने के लिए कहता है । इस तर्क के साथ जा रहा है (यदि यह सही है) , क्या एक समान चर है जो या तो प्रारूप को अनदेखा करेगा या एक निष्पादन योग्य के रूप में इनपुट फ़ाइल को संभाल सकता है? मेरी स्क्रिप्ट जो मैं परिभाषित करता हूं, उसे बदलने में सक्षम है, लेकिन निष्पादन योग्य को तोड़ता है, क्या मेरी स्क्रिप्ट संभव है?