Windows komut satırı ortamını kullanarak bir dosyadaki metni nasıl bulabilir ve değiştirebilirsiniz?


492

Windows komut satırı ortamını kullanarak bir toplu iş dosyası komut dosyası yazıyorum ve bir dosyadaki bazı metinlerin (örneğin "FOO") her birini başka biriyle (örneğin "BAR") değiştirmek istiyorum. Bunu yapmanın en basit yolu nedir? Yerleşik işlevler var mı?



: Bunu kullanmakecho(%text:%search%=%replace%%)
scientist_7

Yanıtlar:


308

Buradaki cevapların çoğu bana doğru yönü göstermeye yardımcı oldu, ancak hiçbiri benim için uygun değildi, bu yüzden çözümümü gönderiyorum.

PowerShell yerleşik olarak gelen Windows 7'ye sahibim. İşte bir dosyadaki tüm metin örneklerini bulmak / değiştirmek için kullandığım komut dosyası:

powershell -Command "(gc myFile.txt) -replace 'foo', 'bar' | Out-File -encoding ASCII myFile.txt"

Açıklamak için:

  • powershell Windows 7'de bulunan powershell.exe dosyasını başlatır
  • -Command "... " çalıştırılacak komutu içeren powershell.exe için bir komut satırı bağımsız değişkeni
  • (gc myFile.txt)içeriğini okur myFile.txt( komutun gckısaltmasıdır Get-Content)
  • -replace 'foo', 'bar'basitçe Sürekli değiştir komutu çalıştırır fooilebar
  • | Out-File myFile.txt çıktıyı dosyaya aktarır myFile.txt
  • -encoding ASCII yorumlar belirtildiği gibi çıktı dosyasının unicode'a kopyalanmasını önler

Powershell.exe zaten PATH ifadenizin bir parçası olmalıdır, ancak değilse ekleyebilirsiniz. Makinemdeki konumuC:\WINDOWS\system32\WindowsPowerShell\v1.0


71
Dikkat edin, bu komut dosyayı Unicode kodlamasına da dönüştürebilir. Ekleyerek -encoding ASCIIveya UTF8veya ne gerekiyorsa kodlamayı elle belirleyebilirsiniz . Ayrıca, UTF8'i hedeflerseniz, dosyanın başında orijinalde görünmeyen bir Bayt Sırası İşareti ekleyebilir.
Wyck

78
@Wyck Nereye koyacağımı anlamak biraz zaman aldı -encoding ASCII. Gelecekte ihtiyaç duyan herkes için, bu olurduOut-File -encoding ASCII myFile.txt
rwilson04

15
Değiştirmem gereken tek şey Set-Contentyerine kullanmaktı Out-File.
kurtzmarc

6
Bu işe yarıyor, ancak kısa bir dosya listesinde bile performans korkunç.
jsuddsjr

23
Değişim belirtecinin (bu durumda 'foo') normal ifade olarak ele alındığına dikkat edin. Orada herhangi bir özel karakteriniz varsa ([]) vardı, bunları bir \ (ters eğik çizgi) ile eklemeniz gerekir.
JW

183

Net 2.0'ı destekleyen Windows sürümündeyseniz kabuğunuzu değiştirirdim. PowerShell , komut satırından .Net'in tam gücünü verir. Yerleşik birçok komuta da vardır. Aşağıdaki örnek sorunuzu çözecektir. Komutların tam adlarını kullanıyorum, daha kısa takma adlar var, ancak bu size Google için bir şey veriyor.

(Get-Content test.txt) | ForEach-Object { $_ -replace "foo", "bar" } | Set-Content test2.txt

10
PowerShell'in bunu başarabildiğini görebiliyorum. Ancak bunu bir toplu iş dosyasından nasıl çalıştırabilirim (örnek: myProc.bat)?
Pablo Venturino

3
@Pablo, powershell.exe'yi kullanın ve ps komutunu tek bir parametreye sarın
Lubos Hasko

56
-1 .. Elbette cevap kabul edildi, ama belirtilen soruya cevap değil.
baash05

28
Aynı dosyaya kaydederseniz, kullanılan bir dosya hatasıyla başarısız olur. Powershell komutunu şu şekilde değiştirmeniz gerekir: (Get-Content test.txt) | ForEach-Object {$ _ -değiştir "foo", "çubuk"} | Set-Content test.txt
BigMomma

6
@Rachel'nin cevabına bakın:powershell -Command "(gc myFile.txt) -replace 'foo', 'bar' | sc myFile.txt"
Nigel Touch

161

Sadece FART (" F ind A ve R eplace T ext" komut satırı yardımcı programı):
büyük bir dosya kümesi içinde metin değiştirme için mükemmel küçük ücretsiz.

Kurulum dosyaları SourceForge üzerindedir .

Kullanım örneği:

fart.exe -p -r -c -- C:\tools\perl-5.8.9\* @@APP_DIR@@ C:\tools

bu Perl dağıtımının dosyalarında yinelemeli olarak yapılacak değişikliklerin önizlemesini yapar.

Tek sorun: FART web sitesi simgesi tam olarak zevkli, zarif veya zarif değil;)


Güncelleme 2017 (7 yıl sonra) jagb Puan yorumlarda 2011 makalesine " Kolay Yolu osuruk - Bul Ve Metni Değiştir " dan Mikail Tunç


19
Güzel olan tek bir exe olmasıdır. Bağımlılık yok. Küçük baskı yok. Uygulaması çok kolay.
Serge Wautier

2
Çok hafif ve kullanımı kolay, ancak değiştirmelerin gerçekleştiği yerleri basmasını umuyordum. Bunu görememek bana güvensizlik duygusu verdi.
William Niu

4
Teşekkürler, mükemmel, standart dos araçlarının bir parçası olmalı ve bir cazibe çalıştı. -P seçeneği, ne kadar değişiklik yapacağını size göstermez ve her zaman 0 dakika bildirir, bu da beni birkaç dakika attı
sradforth

3
Bunun çok eski bir soru olduğunu anlıyorum ama daha fazla bilgi buldum ve Stack Overflow kullanıcıları için yararlı olacağını umuyorum. Ürün iyi açıklanmıştır pislik için Bir başka linki: FART explaned @ emtunc.org ve başka bir sayfa burada bulabilirsiniz: FART değiştirilmesi ile dikkatli olun /ve 'bu şekilde hepimiz için çalışmıyor bazı çalıştı benim için ancak bazı dosyalar üzerinde çalışmadı ve neden bilmiyorum .. Bunu metni başka bir metinle ve a/
jagb

4
@jagb Teşekkür ederim. Daha fazla görünürlük için bağlantınızı yanıta ekledim.
VonC

128

Değiştir - Bir alt dizeyi dize değiştirme kullanarak değiştirme Açıklama: Bir alt dizeyi başka bir dizeyle değiştirmek için dize değiştirme özelliğini kullanın. Burada gösterilen örnek, "teh" yazım hatalarını "string" str değişkenindeki "the" ile değiştirir.

set str=teh cat in teh hat
echo.%str%
set str=%str:teh=the%
echo.%str%

Script Çıkışı:

teh cat in teh hat
the cat in the hat

ref: http://www.dostips.com/DtTipsStringManipulation.php#Snippets.Replace


30
Sed önerisi nasıl daha iyi? Bu hepsinin en basit cevabı gibi görünüyor ve hiçbir şey yüklemeyi gerektirmiyor.
Ocak'ta DonBecker

5
Burada herhangi bir desen eşleştirmesi yapılabilir mi? Joker karakterler, Regex vb.
Keyo

27
"Sed önerisi nasıl daha iyi?" - sed ve benzeri yardımcı programlar dosyalarda çalışır; bu snippet, dosyadaki özel karakterlerin doğru bir şekilde işlenmesini sağlarken, giriş dosyasından satır okuma ve çıktı dosyasına yazma konusunda önemli adımı atlar.
Joe

7
@Asad, evet bu doğru, OP dosyalar hakkında soruyordu, ama aslında dosya olması gerekmeyen akışlarla çalışıyor. Ama burada benim açımdan, bu cevabın kusurlu olması, çünkü bir akıştan okuma / yazma ve herhangi bir özel karakteri işlemeyi ihmal ettiği.
Joe

4
@ Değişken yerine metin nasıl kullanılır? yani. Bir değişken ve bazı ayırıcı olan bir dize değeri var. set str =% str: "##" =% varValue %% çalışmıyor. Herhangi bir geçici çözüm var mı?
MalTec

55

Dosya değiştirme replace.vbs:

Const ForReading = 1    
Const ForWriting = 2

strFileName = Wscript.Arguments(0)
strOldText = Wscript.Arguments(1)
strNewText = Wscript.Arguments(2)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
strText = objFile.ReadAll
objFile.Close

strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.Write strNewText  'WriteLine adds extra CR/LF
objFile.Close

Bu revize edilmiş komut dosyasını kullanmak için (replace.vbs olarak adlandıracağız) komut istemine buna benzer bir komut yazmanız yeterlidir:

cscript replace.vbs "C:\Scripts\Text.txt" "Jim " "James "


bu temiz, RegEx kullanımına izin veriyor mu?
user280109

3
@ user280109 Evet, VBScript destekliyor RegExp. Normal bir ifade kullanarak değiştirmek için kullanabilir: With (New RegExp): strNewText = .Replace(strText, strOldText, strNewText): End With. İlk 9 yakalama grubunun metnini $1, $2... tuşunu kullanarak alabilirsiniz $9.
Diş fırçası

2
VBScript genellikle gözden
kaçar

1
@ user280109 Sadece ihtiyacım olan komutu verdin. Ama değiştirmek istiyorum (büyük / küçük harf duyarsız) Bunun için komut sağlayabilir misiniz?
Ajmal Praveen

49

BatchSubstitute.bat dostips.com adresinde saf bir toplu iş dosyası kullanarak arama ve değiştirme örneği yer almaktadır.

Bu bir kombinasyonunu kullanır FOR, FINDveCALL SET .

Aralarında karakter içeren satırlar "&<>]|^yanlış işlenebilir.



8
Kullanım şartları herhangi bir kodun kopyalanmasını yasaklayan bir kod pasajının yararlılığını sorgulamalıyım ("alanips.com adı altında herhangi bir biçimde alan adı sahibinin açık yazılı izni olmadan herhangi bir biçimde dağıtamazsınız.") .
Gilles 'SO- kötü olmayı kes'

1
Şartlarının kafa karıştırıcı olduğunu kabul ediyorum, ayrıca "dostips.com etki alanı altında sağlanan bilgiler umarım faydalıdır" diyorlar, bu yüzden varsayımım insanların bir sorunu çözmek için kodu kopyalamaları için mutlu olduklarıdır. Herhangi bir şart ve koşulu okuduğumdan ve mutlu olduğumdan emin değilim ...
morechilli

5
Bu harika. Bunu yapmak için başka bir şey indirmeyi içermeyen cevapları seviyorum.
Ruairi O'Brien

Harici yardımcı programları içermeyen çözümleri de seviyorum, ne yazık ki, bu toplu işi çalıştırmaya çalıştığımda "find: invalid predicate" 'i almaya devam ediyorum. Şu anda hata ayıklamak için gerçekten zamanınız yok.
Jahmic

2
"Find: geçersiz predicate` `" hatası, sistemimdeki harici bir 'find' yardımcı programından kaynaklandı. Bir kez kaldırıldı, bu iyi çalıştı.
Jahmic

47

Not - REPL.BAT JREPL.BAT 7.0 ve sonraki sürümlerin yerini alan üstün JREPL.BAT bağlantısı için seçenek üzerinden yanı sıra herhangi bir seçeneğin yanı sıra unicode'u da (UTF-16LE) destekleyen bir güncelleştirme için bu cevabın sonundaki güncelleştirmeyi gördüğünüzden emin olun. ADO aracılığıyla UTF-8 dahil olmak üzere diğer karakter seti !!!!
/UTF


ASCII (veya genişletilmiş ASCII) dosyalarını komut satırı veya toplu iş dosyası aracılığıyla değiştirmek için çok uygun olan REPL.BAT adlı küçük bir karma JScript / toplu iş yardımcı programı yazdım . Tamamen yerel komut dosyası, herhangi bir 3. tarafın çalıştırılabilir olmasını gerektirmez ve XP'den sonraki herhangi bir modern Windows sürümünde çalışır. Özellikle saf yığın çözeltileriyle karşılaştırıldığında çok hızlıdır.

REPL.BAT sadece stdin'i okur, bir JScript normal ifade araması ve değiştirmesi gerçekleştirir ve sonucu stdout'a yazar.

REPL.BAT'in geçerli klasörünüzde veya daha iyisi PATH'nizin içinde bir yerde olduğunu varsayarak, foot'u test.txt dosyasında bar ile nasıl değiştireceğinizin önemsiz bir örneği:

type test.txt|repl "foo" "bar" >test.txt.new
move /y test.txt.new test.txt

JScript normal ifadesi yetenekleri onu çok güçlü kılar, özellikle de değiştirilen metnin arama metninden yakalanan alt dizelere başvurma yeteneği.

Yardımcı programa oldukça güçlü kılan bir dizi seçenek ekledim. Örneğin, Mve Xseçeneklerini birleştirmek ikili dosyaların değiştirilmesini sağlar! MMulti-line seçeneği birden fazla satır boyunca arama sağlar. XEXtended değiştirme düzeni seçeneği yedek metninde herhangi bir ikili değere dahil edilebilmesi kaçış dizilerini sağlar.

Tüm yardımcı program saf JScript olarak yazılmış olabilir, ancak karma toplu iş dosyası, yardımcı programı her kullanmak istediğinizde açıkça CSCRIPT belirtme gereğini ortadan kaldırır.

İşte REPL.BAT betiği. Tam dokümantasyon betiğin içine yerleştirilmiştir.

@if (@X)==(@Y) @end /* Harmless hybrid line that begins a JScript comment

::************ Documentation ***********
::REPL.BAT version 6.2
:::
:::REPL  Search  Replace  [Options  [SourceVar]]
:::REPL  /?[REGEX|REPLACE]
:::REPL  /V
:::
:::  Performs a global regular expression search and replace operation on
:::  each line of input from stdin and prints the result to stdout.
:::
:::  Each parameter may be optionally enclosed by double quotes. The double
:::  quotes are not considered part of the argument. The quotes are required
:::  if the parameter contains a batch token delimiter like space, tab, comma,
:::  semicolon. The quotes should also be used if the argument contains a
:::  batch special character like &, |, etc. so that the special character
:::  does not need to be escaped with ^.
:::
:::  If called with a single argument of /?, then prints help documentation
:::  to stdout. If a single argument of /?REGEX, then opens up Microsoft's
:::  JScript regular expression documentation within your browser. If a single
:::  argument of /?REPLACE, then opens up Microsoft's JScript REPLACE
:::  documentation within your browser.
:::
:::  If called with a single argument of /V, case insensitive, then prints
:::  the version of REPL.BAT.
:::
:::  Search  - By default, this is a case sensitive JScript (ECMA) regular
:::            expression expressed as a string.
:::
:::            JScript regex syntax documentation is available at
:::            http://msdn.microsoft.com/en-us/library/ae5bf541(v=vs.80).aspx
:::
:::  Replace - By default, this is the string to be used as a replacement for
:::            each found search expression. Full support is provided for
:::            substituion patterns available to the JScript replace method.
:::
:::            For example, $& represents the portion of the source that matched
:::            the entire search pattern, $1 represents the first captured
:::            submatch, $2 the second captured submatch, etc. A $ literal
:::            can be escaped as $$.
:::
:::            An empty replacement string must be represented as "".
:::
:::            Replace substitution pattern syntax is fully documented at
:::            http://msdn.microsoft.com/en-US/library/efy6s3e6(v=vs.80).aspx
:::
:::  Options - An optional string of characters used to alter the behavior
:::            of REPL. The option characters are case insensitive, and may
:::            appear in any order.
:::
:::            A - Only print altered lines. Unaltered lines are discarded.
:::                If the S options is present, then prints the result only if
:::                there was a change anywhere in the string. The A option is
:::                incompatible with the M option unless the S option is present.
:::
:::            B - The Search must match the beginning of a line.
:::                Mostly used with literal searches.
:::
:::            E - The Search must match the end of a line.
:::                Mostly used with literal searches.
:::
:::            I - Makes the search case-insensitive.
:::
:::            J - The Replace argument represents a JScript expression.
:::                The expression may access an array like arguments object
:::                named $. However, $ is not a true array object.
:::
:::                The $.length property contains the total number of arguments
:::                available. The $.length value is equal to n+3, where n is the
:::                number of capturing left parentheses within the Search string.
:::
:::                $[0] is the substring that matched the Search,
:::                $[1] through $[n] are the captured submatch strings,
:::                $[n+1] is the offset where the match occurred, and
:::                $[n+2] is the original source string.
:::
:::                Arguments $[0] through $[10] may be abbreviated as
:::                $1 through $10. Argument $[11] and above must use the square
:::                bracket notation.
:::
:::            L - The Search is treated as a string literal instead of a
:::                regular expression. Also, all $ found in the Replace string
:::                are treated as $ literals.
:::
:::            M - Multi-line mode. The entire contents of stdin is read and
:::                processed in one pass instead of line by line, thus enabling
:::                search for \n. This also enables preservation of the original
:::                line terminators. If the M option is not present, then every
:::                printed line is terminated with carriage return and line feed.
:::                The M option is incompatible with the A option unless the S
:::                option is also present.
:::
:::                Note: If working with binary data containing NULL bytes,
:::                      then the M option must be used.
:::
:::            S - The source is read from an environment variable instead of
:::                from stdin. The name of the source environment variable is
:::                specified in the next argument after the option string. Without
:::                the M option, ^ anchors the beginning of the string, and $ the
:::                end of the string. With the M option, ^ anchors the beginning
:::                of a line, and $ the end of a line.
:::
:::            V - Search and Replace represent the name of environment
:::                variables that contain the respective values. An undefined
:::                variable is treated as an empty string.
:::
:::            X - Enables extended substitution pattern syntax with support
:::                for the following escape sequences within the Replace string:
:::
:::                \\     -  Backslash
:::                \b     -  Backspace
:::                \f     -  Formfeed
:::                \n     -  Newline
:::                \q     -  Quote
:::                \r     -  Carriage Return
:::                \t     -  Horizontal Tab
:::                \v     -  Vertical Tab
:::                \xnn   -  Extended ASCII byte code expressed as 2 hex digits
:::                \unnnn -  Unicode character expressed as 4 hex digits
:::
:::                Also enables the \q escape sequence for the Search string.
:::                The other escape sequences are already standard for a regular
:::                expression Search string.
:::
:::                Also modifies the behavior of \xnn in the Search string to work
:::                properly with extended ASCII byte codes.
:::
:::                Extended escape sequences are supported even when the L option
:::                is used. Both Search and Replace support all of the extended
:::                escape sequences if both the X and L opions are combined.
:::
:::  Return Codes:  0 = At least one change was made
:::                     or the /? or /V option was used
:::
:::                 1 = No change was made
:::
:::                 2 = Invalid call syntax or incompatible options
:::
:::                 3 = JScript runtime error, typically due to invalid regex
:::
::: REPL.BAT was written by Dave Benham, with assistance from DosTips user Aacini
::: to get \xnn to work properly with extended ASCII byte codes. Also assistance
::: from DosTips user penpen diagnosing issues reading NULL bytes, along with a
::: workaround. REPL.BAT was originally posted at:
::: http://www.dostips.com/forum/viewtopic.php?f=3&t=3855
:::

::************ Batch portion ***********
@echo off
if .%2 equ . (
  if "%~1" equ "/?" (
    <"%~f0" cscript //E:JScript //nologo "%~f0" "^:::" "" a
    exit /b 0
  ) else if /i "%~1" equ "/?regex" (
    explorer "http://msdn.microsoft.com/en-us/library/ae5bf541(v=vs.80).aspx"
    exit /b 0
  ) else if /i "%~1" equ "/?replace" (
    explorer "http://msdn.microsoft.com/en-US/library/efy6s3e6(v=vs.80).aspx"
    exit /b 0
  ) else if /i "%~1" equ "/V" (
    <"%~f0" cscript //E:JScript //nologo "%~f0" "^::(REPL\.BAT version)" "$1" a
    exit /b 0
  ) else (
    call :err "Insufficient arguments"
    exit /b 2
  )
)
echo(%~3|findstr /i "[^SMILEBVXAJ]" >nul && (
  call :err "Invalid option(s)"
  exit /b 2
)
echo(%~3|findstr /i "M"|findstr /i "A"|findstr /vi "S" >nul && (
  call :err "Incompatible options"
  exit /b 2
)
cscript //E:JScript //nologo "%~f0" %*
exit /b %errorlevel%

:err
>&2 echo ERROR: %~1. Use REPL /? to get help.
exit /b

************* JScript portion **********/
var rtn=1;
try {
  var env=WScript.CreateObject("WScript.Shell").Environment("Process");
  var args=WScript.Arguments;
  var search=args.Item(0);
  var replace=args.Item(1);
  var options="g";
  if (args.length>2) options+=args.Item(2).toLowerCase();
  var multi=(options.indexOf("m")>=0);
  var alterations=(options.indexOf("a")>=0);
  if (alterations) options=options.replace(/a/g,"");
  var srcVar=(options.indexOf("s")>=0);
  if (srcVar) options=options.replace(/s/g,"");
  var jexpr=(options.indexOf("j")>=0);
  if (jexpr) options=options.replace(/j/g,"");
  if (options.indexOf("v")>=0) {
    options=options.replace(/v/g,"");
    search=env(search);
    replace=env(replace);
  }
  if (options.indexOf("x")>=0) {
    options=options.replace(/x/g,"");
    if (!jexpr) {
      replace=replace.replace(/\\\\/g,"\\B");
      replace=replace.replace(/\\q/g,"\"");
      replace=replace.replace(/\\x80/g,"\\u20AC");
      replace=replace.replace(/\\x82/g,"\\u201A");
      replace=replace.replace(/\\x83/g,"\\u0192");
      replace=replace.replace(/\\x84/g,"\\u201E");
      replace=replace.replace(/\\x85/g,"\\u2026");
      replace=replace.replace(/\\x86/g,"\\u2020");
      replace=replace.replace(/\\x87/g,"\\u2021");
      replace=replace.replace(/\\x88/g,"\\u02C6");
      replace=replace.replace(/\\x89/g,"\\u2030");
      replace=replace.replace(/\\x8[aA]/g,"\\u0160");
      replace=replace.replace(/\\x8[bB]/g,"\\u2039");
      replace=replace.replace(/\\x8[cC]/g,"\\u0152");
      replace=replace.replace(/\\x8[eE]/g,"\\u017D");
      replace=replace.replace(/\\x91/g,"\\u2018");
      replace=replace.replace(/\\x92/g,"\\u2019");
      replace=replace.replace(/\\x93/g,"\\u201C");
      replace=replace.replace(/\\x94/g,"\\u201D");
      replace=replace.replace(/\\x95/g,"\\u2022");
      replace=replace.replace(/\\x96/g,"\\u2013");
      replace=replace.replace(/\\x97/g,"\\u2014");
      replace=replace.replace(/\\x98/g,"\\u02DC");
      replace=replace.replace(/\\x99/g,"\\u2122");
      replace=replace.replace(/\\x9[aA]/g,"\\u0161");
      replace=replace.replace(/\\x9[bB]/g,"\\u203A");
      replace=replace.replace(/\\x9[cC]/g,"\\u0153");
      replace=replace.replace(/\\x9[dD]/g,"\\u009D");
      replace=replace.replace(/\\x9[eE]/g,"\\u017E");
      replace=replace.replace(/\\x9[fF]/g,"\\u0178");
      replace=replace.replace(/\\b/g,"\b");
      replace=replace.replace(/\\f/g,"\f");
      replace=replace.replace(/\\n/g,"\n");
      replace=replace.replace(/\\r/g,"\r");
      replace=replace.replace(/\\t/g,"\t");
      replace=replace.replace(/\\v/g,"\v");
      replace=replace.replace(/\\x[0-9a-fA-F]{2}|\\u[0-9a-fA-F]{4}/g,
        function($0,$1,$2){
          return String.fromCharCode(parseInt("0x"+$0.substring(2)));
        }
      );
      replace=replace.replace(/\\B/g,"\\");
    }
    search=search.replace(/\\\\/g,"\\B");
    search=search.replace(/\\q/g,"\"");
    search=search.replace(/\\x80/g,"\\u20AC");
    search=search.replace(/\\x82/g,"\\u201A");
    search=search.replace(/\\x83/g,"\\u0192");
    search=search.replace(/\\x84/g,"\\u201E");
    search=search.replace(/\\x85/g,"\\u2026");
    search=search.replace(/\\x86/g,"\\u2020");
    search=search.replace(/\\x87/g,"\\u2021");
    search=search.replace(/\\x88/g,"\\u02C6");
    search=search.replace(/\\x89/g,"\\u2030");
    search=search.replace(/\\x8[aA]/g,"\\u0160");
    search=search.replace(/\\x8[bB]/g,"\\u2039");
    search=search.replace(/\\x8[cC]/g,"\\u0152");
    search=search.replace(/\\x8[eE]/g,"\\u017D");
    search=search.replace(/\\x91/g,"\\u2018");
    search=search.replace(/\\x92/g,"\\u2019");
    search=search.replace(/\\x93/g,"\\u201C");
    search=search.replace(/\\x94/g,"\\u201D");
    search=search.replace(/\\x95/g,"\\u2022");
    search=search.replace(/\\x96/g,"\\u2013");
    search=search.replace(/\\x97/g,"\\u2014");
    search=search.replace(/\\x98/g,"\\u02DC");
    search=search.replace(/\\x99/g,"\\u2122");
    search=search.replace(/\\x9[aA]/g,"\\u0161");
    search=search.replace(/\\x9[bB]/g,"\\u203A");
    search=search.replace(/\\x9[cC]/g,"\\u0153");
    search=search.replace(/\\x9[dD]/g,"\\u009D");
    search=search.replace(/\\x9[eE]/g,"\\u017E");
    search=search.replace(/\\x9[fF]/g,"\\u0178");
    if (options.indexOf("l")>=0) {
      search=search.replace(/\\b/g,"\b");
      search=search.replace(/\\f/g,"\f");
      search=search.replace(/\\n/g,"\n");
      search=search.replace(/\\r/g,"\r");
      search=search.replace(/\\t/g,"\t");
      search=search.replace(/\\v/g,"\v");
      search=search.replace(/\\x[0-9a-fA-F]{2}|\\u[0-9a-fA-F]{4}/g,
        function($0,$1,$2){
          return String.fromCharCode(parseInt("0x"+$0.substring(2)));
        }
      );
      search=search.replace(/\\B/g,"\\");
    } else search=search.replace(/\\B/g,"\\\\");
  }
  if (options.indexOf("l")>=0) {
    options=options.replace(/l/g,"");
    search=search.replace(/([.^$*+?()[{\\|])/g,"\\$1");
    if (!jexpr) replace=replace.replace(/\$/g,"$$$$");
  }
  if (options.indexOf("b")>=0) {
    options=options.replace(/b/g,"");
    search="^"+search
  }
  if (options.indexOf("e")>=0) {
    options=options.replace(/e/g,"");
    search=search+"$"
  }
  var search=new RegExp(search,options);
  var str1, str2;

  if (srcVar) {
    str1=env(args.Item(3));
    str2=str1.replace(search,jexpr?replFunc:replace);
    if (!alterations || str1!=str2) if (multi) {
      WScript.Stdout.Write(str2);
    } else {
      WScript.Stdout.WriteLine(str2);
    }
    if (str1!=str2) rtn=0;
  } else if (multi){
    var buf=1024;
    str1="";
    while (!WScript.StdIn.AtEndOfStream) {
      str1+=WScript.StdIn.Read(buf);
      buf*=2
    }
    str2=str1.replace(search,jexpr?replFunc:replace);
    WScript.Stdout.Write(str2);
    if (str1!=str2) rtn=0;
  } else {
    while (!WScript.StdIn.AtEndOfStream) {
      str1=WScript.StdIn.ReadLine();
      str2=str1.replace(search,jexpr?replFunc:replace);
      if (!alterations || str1!=str2) WScript.Stdout.WriteLine(str2);
      if (str1!=str2) rtn=0;
    }
  }
} catch(e) {
  WScript.Stderr.WriteLine("JScript runtime error: "+e.message);
  rtn=3;
}
WScript.Quit(rtn);

function replFunc($0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10) {
  var $=arguments;
  return(eval(replace));
}


ÖNEMLİ GÜNCELLEME

REPL.BAT'ın geliştirilmesini bıraktım ve JREPL.BAT ile değiştirdim. Bu yeni yardımcı program, REPL.BAT ile aynı işlevselliğe ve çok daha fazlasına sahiptir:

  • Yerel CSCRIPT unicode özellikleri aracılığıyla Unicode UTF-16LE desteği ve ADO üzerinden diğer tüm karakter kümeleri (UTF-8 dahil).
  • Doğrudan bir dosyadan doğrudan dosyaya okuma / yazma: borulara, yönlendirmeye veya taşıma komutuna gerek yoktur.
  • Kullanıcı tarafından sağlanan JScript'i dahil etme
  • Unix tr'e benzer çeviri olanağı, sadece regex aramasını ve JScript değiştirmeyi de destekler
  • Eşleşmeyen metni sil
  • Çıktı satırlarını satır numarasına sahip önek
  • ve dahası...

Her zaman olduğu gibi, tam dokümantasyon betiğin içine yerleştirilmiştir.

Orijinal önemsiz çözüm artık daha da basit:

jrepl "foo" "bar" /f test.txt /o -

Mevcut JREPL.BAT sürümü DosTips'te mevcuttur . Kullanım örneklerini ve geliştirme geçmişini görmek için, konu başlığındaki sonraki yazıların tümünü okuyun.


Harika şeyler! Bu b / c sadeliği ve hangi komut dosyası için adapte edebilirsiniz şekilde seviyorum, bu nedenle crappy toplu iş JS kodu yazma.
Adaptabi

Düzenle - Yalnızca değiştirilen satırları yazdırmak için A seçeneği eklendi. Ayrıca \q, temsil etmeyi desteklemek için X seçeneğini geliştirdi "ve Arama değişmezleri artık L ve X seçenekleri birleştirildiğinde tüm genişletilmiş kaçış dizilerini destekliyor.
dbenham

@dbenham - +1. Bu kaygan bir yaklaşımdır, diğer bazı görevler için de kullanışlı olacaktır. Gönderdiğiniz için teşekkürler.
bw

DÜZENLEME - X seçeneği kullanıldığında kodun genişletilmiş ASCII bayt kodunu temsil etmesi için \ xnn davranışını değiştirdim. Ayrıca bir / V sürüm seçeneği eklendi.
dbenham

9
@dbenham Bu bir mücevher. Neden GitHub'a veya Gist olarak eklemiyorsun? Sürüm oluşturma, takip, sürüm / dağıtım, düzeltmeler ve daha kolay hale getirir. Bununla ilgili yardıma ihtiyacınız olursa bana bildirin.
Atif Aziz

36

FNR kullan

fnrYardımcı programı kullanın . Bazı avantajları var fart:

  • Düzenli ifadeler
  • İsteğe bağlı GUI. Toplu iş dosyasına koymak üzere komut satırı metni oluşturmak için bir "Komut satırı oluştur düğmesi" vardır.
  • Çok satırlı desenler: GUI, çok satırlı modellerle kolayca çalışmanıza olanak tanır. FART'ta satır sonlarından elle kaçmanız gerekir.
  • Metin dosyası kodlamasını seçmenizi sağlar. Ayrıca otomatik algılama seçeneği vardır.

FNR'yi buradan indirin: http://findandreplace.io/?z=codeplex

Kullanım örneği: fnr --cl --dir "<Directory Path>" --fileMask "hibernate.*" --useRegEx --find "find_str_expression" --replace "replace_string"


1
Bu güzel. Gui'den komut satırı oluşturabilmek, hızlı bir şekilde gitmemi sağlayan güzel ve basit bir özellik.
David Hammond

Çok kullanışlı bir araç. Daha önce FART'ı denedim, ancak dokümantasyon güncel değil.
Artur Kędzior

Serin bir araç, düzenli ifadeyi bile destekler. Bu FART'ın eksik olduğu bir şey.
Dio Phung

1
Bu aracı belirttiğiniz için teşekkürler. Tek exe, artık geliştirilmeyen (ve regex'i özleyen) FART için harika bir yedek; ve PowerShell sözdizimi çok dayanılmaz.
Gras Double

Bu çok yararlı. Windows grep + sed değiştirme arıyordu, bu harika çalıştı!
Serban Tanasa

25

Herhangi bir yerleşik komutla yapmanın bir yolu olduğunu düşünmüyorum. Gnuwin32 veya UnxUtils gibi bir şey indirmenizi ve sedkomutu kullanmanızı öneririm (veya yalnızca indirme sed):

sed -c s/FOO/BAR/g filename

2
Cygwin kullanın ( cygwin.com ). Aslında linux kurmak için en iyi şey.
Andrew Johnson

Birinin cygwin kurulumuna dayanmayan bir çözüm sunması daha iyidir. POSIX dize manipülasyonu beyinsizdir - bunu Windows'ta yapmak biraz daha belirsizdir.
Rex

4
Gnuwin32 ve UnxUtils, Windows için oluşturulmuş tek başına ikili dosyalardır. Cygwin'e bağımlı değiller.
Ferruccio

1
cygwin: sed -i -b -e 's/FOO/BAR/g' `find . -name *.txt`-i - dosyayı yerinde düzenle; -b - CR +
LF'yi işlemeyin

@Jandnson Görüş ve bilgi iki farklı şeydir.
Preza8

21

Partiye geç kaldığımı biliyorum ..

Şahsen ben şu çözümü beğendim: - http://www.dostips.com/DtTipsStringManipulation.php#Snippets.Replace

Ayrıca, SMTP aracılığıyla günde yaklaşık 500 e-posta göndermemize yardımcı olması için Tekilleştirme İşlevini kapsamlı bir şekilde kullanıyoruz: - https://groups.google.com/forum/#!topic/alt.msdos.batch.nt/sj8IUhMOq6o

ve her ikisi de ekstra bir araç veya yardımcı program gerektirmeden yerel olarak çalışır.

Replacer:

DEL New.txt
setLocal EnableDelayedExpansion
For /f "tokens=* delims= " %%a in (OLD.txt) do (
Set str=%%a
set str=!str:FOO=BAR!
echo !str!>>New.txt
)
ENDLOCAL

DEDUPLICATOR (bir ABA numarası için -9 kullanımına dikkat edin):

REM DE-DUPLICATE THE Mapping.txt FILE
REM THE DE-DUPLICATED FILE IS STORED AS new.txt

set MapFile=Mapping.txt
set ReplaceFile=New.txt

del %ReplaceFile%
::DelDupeText.bat
rem https://groups.google.com/forum/#!topic/alt.msdos.batch.nt/sj8IUhMOq6o
setLocal EnableDelayedExpansion
for /f "tokens=1,2 delims=," %%a in (%MapFile%) do (
set str=%%a
rem Ref: http://www.dostips.com/DtTipsStringManipulation.php#Snippets.RightString
set str=!str:~-9!
set str2=%%a
set str3=%%a,%%b

find /i ^"!str!^" %MapFile%
find /i ^"!str!^" %ReplaceFile%
if errorlevel 1 echo !str3!>>%ReplaceFile%
)
ENDLOCAL

Teşekkürler!


toplu iş komut dosyası yalnızca bir dosya kopyasından başka bir şey yapmaz - ayrıca: neden kendinize teşekkür ediyorsunuz?
specializt

Orijinal istek, bir toplu iş komut dosyası kullanarak ve tercihen yerleşik işlevlerle bir metin dosyasındaki "FOO" yerine "BAR" kullanılmasıdır. Google Grupları postasına teşekkür ettiğim bir şey varsa, hangisinin harika çalıştığını gördüm ve bunu bugüne kadar kullanıyoruz. Ayrıca, bu tür yayınları ve yanıtları da yoldan çıkan kullanıcılar için yararlı olarak görün. Dosya kopyalama hakkındaki yorumunuzu göremiyorum .. Tabii, bir dosyanın içeriğini alır ve yankı başka bir dosyaya gelir, ancak verilere dayanarak, gerekli bilgileri keser ve ayrıştırır. İlk denemeyi tavsiye ederim. ;)
Leptonator

temel olarak iki statik dizenin yerini alan bir dosya kopyalama aracıdır - en azından iki değişkeni buraya yerleştirebilirsiniz, böylece denemek isteyen insanların gerçekten kullanabilmesi için sözdizimini anlamaları gerekmez - ayrıca: İnternet üzerindeki varsayımlar neredeyse her zaman tamamen yanlıştır. Bunu hatırla.
specializt

4
@specializt - Lütfen ... Anlambilimi tartışmak için burada değilim. İsterseniz bunu çevrimdışı duruma getirebilir miyiz?
Leptonator

2
Benim düşünceme göre, bu orijinal sorunun cevabı. Kurulum sırasında bir hizmet için başlatma dosyalarını yapılandırmak üzere bu ipucunu kullanacağım ve PowerShell'i etkinleştirmek veya komut dosyası altyapısının sunucularımda çalışmasına izin vermek istemem. Sıklıkla pencerelerle ilgili soruların cevaplarını, hala "PC" tutumu var gibi "bu gizmo oradan yükleyin" ile başlayın.
mico

15

Windows'ta Git ile çalıştığınızda ateş edin git-bash ve kullanın sed. Veya Windows 10 kullanırken, "Windows'ta Ubuntu'da Bash" i (Linux alt sisteminden) başlatın ve kullanın sed.

Bu bir akış düzenleyicisi, ancak aşağıdaki komutu kullanarak dosyaları doğrudan düzenleyebilir:

sed -i -e 's/foo/bar/g' filename
  • -i dosya adında yerinde düzenleme seçeneği kullanılır.
  • -e seçeneği çalıştırılacak bir komutu gösterir.
    • s"foo" ifadesini "bar" gile değiştirmek ve bulunan eşleşmeleri değiştirmek için kullanılır.

EreOn tarafından not:

Yalnızca Git deposunun sürümlenmiş dosyalarındaki bir dizeyi değiştirmek istiyorsanız, şunu kullanmak isteyebilirsiniz:

git ls-files <eventual subfolders & filters> | xargs sed -i -e 's/foo/bar/g'

harikalar yaratıyor.


1
Bu yeniden adlandırmayı bir git deposunda gerçekten yapıyorsanız ve yalnızca sürümlenmiş dosyalarda değiştirmek istiyorsanız, şunları yapmak isteyebilirsiniz: git ls-files <eventual subfolders & filters> | xargs sed -i -e 's/foo/bar/g'hangisi harikalar yaratır .
20'de

13

Buradaki mevcut cevaplardan bazılarıyla oynadım ve gelişmiş çözümümü tercih ettim ...

type test.txt | powershell -Command "$input | ForEach-Object { $_ -replace \"foo\", \"bar\" }"

veya çıktıyı tekrar bir dosyaya kaydetmek istiyorsanız ...

type test.txt | powershell -Command "$input | ForEach-Object { $_ -replace \"foo\", \"bar\" }" > outputFile.txt

Bunun yararı, herhangi bir programdan çıktı elde edebilmenizdir. Bununla da düzenli ifadeler kullanmaya bakacağız. Daha kolay kullanım için bir BAT dosyasına nasıl dönüştürüleceğini anlayamadım ... :-(


3
Bu iyi bir çözüm. Ne yazık ki, type80 karakterden büyük tüm satırların sarılması anlamına gelir. Ne acı.
sirdank

12

Perl kullandım ve bu harika çalışıyor.

perl -pi.orig -e "s/<textToReplace>/<textToReplaceWith>/g;" <fileName>

.orig, orijinal dosyaya ekleyeceği uzantıdır

* .Html gibi eşleşen birkaç dosya için

for %x in (<filePattern>) do perl -pi.orig -e "s/<textToReplace>/<textToReplaceWith>/g;" %x

Bu basit çözüm +1, bat sh dönüştürürken, sadece yerine sedile perl -pi.backup -e:) ve takdir
Yann39

11

ile replacer.bat

1) e?Özel karakter dizilerini \n\rve unicode dizileri değerlendirecek seçenek ile . Bu durumda alıntı yapılanların yerini alacak "Foo"ve "Bar":

call replacer.bat "e?C:\content.txt" "\u0022Foo\u0022" "\u0022Bar\u0022"

2) Foove Baralıntılarının yapılmadığı yerlerde basit değiştirme .

call replacer.bat "C:\content.txt" "Foo" "Bar"

benim için çalışmıyor. Bunu nasıl yürütüyorsun? 'Replace_in_config.bat' hatası alıyorum, dahili veya harici komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor.
FrenkyB

@FrenkyB - aradığınız dizinde veya yolda olması gerekir - ss64.com/nt/path.html
npocmaka

Üç dosyanın hepsini aynı dizinde aldım.
FrenkyB

9

İşte Win XP'de çalıştığını bulduğum bir çözüm. Çalışan toplu iş dosyama şunları ekledim:

set value=new_value

:: Setup initial configuration
:: I use && as the delimiter in the file because it should not exist, thereby giving me the whole line
::
echo --> Setting configuration and properties.
for /f "tokens=* delims=&&" %%a in (config\config.txt) do ( 
  call replace.bat "%%a" _KEY_ %value% config\temp.txt 
)
del config\config.txt
rename config\temp.txt config.txt

replace.batAşağıdaki dosyada olduğu gibi. %%aDeğişken her zaman for döngüsünde son değeri vermek gibi görünüyor , çünkü aynı toplu iş dosyası içinde bu işlevi dahil etmek için bir yol bulamadık .

replace.bat:

@echo off

:: This ensures the parameters are resolved prior to the internal variable
::
SetLocal EnableDelayedExpansion

:: Replaces Key Variables
::
:: Parameters:
:: %1  = Line to search for replacement
:: %2  = Key to replace
:: %3  = Value to replace key with
:: %4  = File in which to write the replacement
::

:: Read in line without the surrounding double quotes (use ~)
::
set line=%~1

:: Write line to specified file, replacing key (%2) with value (%3)
::
echo !line:%2=%3! >> %4

:: Restore delayed expansion
::
EndLocal

1
Ne yazık ki bu da boş satırları atlıyor. {{For}} komutunun bir özelliği .
John Rocha

7

Bir göz atın Windows altında bir sed eşdeğer istedi cmd.exe için herhangi bir sed benzeri programı var mı , bu soru için de geçerli olmalıdır. Yönetici Özeti:

  • Toplu iş dosyasında yapılabilir, ancak hoş değil
  • Bir exe'yi kurma veya sadece kopyalama lüksüne sahipseniz, sizin için yapacak birçok üçüncü taraf yürütülebilir dosya
  • Windows kutusu üzerinde değişiklik yapmadan çalıştırabileceğiniz bir şeye ihtiyacınız varsa VBScript veya benzeri ile yapılabilir.

4

Biraz geç olabilir, ancak yazılımları onaylatmanın acısını yaşamak istemediğim için sık sık benzer şeyler arıyorum.

Ancak, FOR deyimini genellikle çeşitli biçimlerde kullanırsınız. Birisi arama ve değiştirme yapan kullanışlı bir toplu iş dosyası oluşturdu. Buraya bir bak . Sağlanan toplu iş dosyasının sınırlamalarını anlamak önemlidir. Bu nedenle bu cevaptaki kaynak kodu kopyalamıyorum.


4

Tedarik o iki toplu dosya search and replacefonksiyonları yığın taşması üyeleri tarafından yazıldığı dbenhamve aacinikullanma native built-in jscriptWindows.

Her ikisi de robustve very swift with large filesdüz toplu komut dosyası ile karşılaştırılır ve aynı zamanda simplermetnin temel değiştirilmesi için kullanılır. İkisinin de Windows regular expressiondesen eşleşmesi var.

  1. Bu sed-likeyardımcı toplu iş dosyası denir repl.bat(dbenham tarafından).

    LDeğişmez anahtarı kullanan örnek :

    echo This is FOO here|repl "FOO" "BAR" L
    echo and with a file:
    type "file.txt" |repl "FOO" "BAR" L >"newfile.txt"
    
  2. Bu grep-likeyardımcı toplu iş dosyasına denirfindrepl.bat (aacini tarafından) çağrılır.

    Düzenli ifadeleri etkin olan örnek:

    echo This is FOO here|findrepl "FOO" "BAR" 
    echo and with a file:
    type "file.txt" |findrepl "FOO" "BAR" >"newfile.txt"
    

Her ikisi de sistem genelinde güçlü araçlar haline gelir when placed in a folder that is on the path veya bir toplu iş dosyasıyla aynı klasörde veya cmd isteminden kullanılabilir.

Her ikisinin de case-insensitiveanahtarları ve diğer birçok işlevi vardır.


3

Güç kabuğu komutu bir cazibe gibi çalışır

(
test.txt | ForEach-Object { $_ -replace "foo", "bar" } | Set-Content test2.txt
)

3

Sadece benzer bir sorunla karşı karşıya - "Arama ve dosyaları içinde metin değiştirme", ancak dosya adları ve arama / repalce hem de dışında regex kullanmanız gerekir. Powershell'e aşina olmadığım ve aramalarımı daha sonra kullanmak üzere kaydetmek istediğimden daha "kullanıcı dostu" bir şeye ihtiyacım var (GUI varsa tercih edilir).

Yani, Googling yaparken :) Harika bir araç buldum - FAR (Bul ve Değiştir) (FART değil).

Bu küçük program güzel GUI'ye sahiptir ve dosya adlarında ve dosyalarda arama yapmak için normal ifadeyi destekler. Tek dezavantajı, ayarlarınızı kaydetmek istiyorsanız programı yönetici olarak çalıştırmanız gerektiğidir (en azından Win7'de).


2010'dan gelen cevapla aynı cevap @VonC Bu konuda
jeb

@jeb Bunu çekti FAR değil FART hemen hemen aynı adlara sahip iki farklı program -. FAR, GUI'ye sahiptir ve regex ile çalışabilirken, aşağıdaki ileti dizisindeki insanlar FART'ın regex'i desteklemediğini belirtmektedir.
madcorp

3

Ben kullanım tercih ediyorum seddan Win32 için GNU araçlarından aşağıdakiler not edilmesi gerekir

  • tek tırnaklı ''pencerelerde çalışmaz, ""bunun yerine kullanın
  • sed -ipencerelerde çalışmaz, dosya değiştirmeye ihtiyaç duyar

Bu nedenle, sedpencerelerde bir dosyadaki metni bulmak ve değiştirmek için çalışma kodu aşağıdaki gibidir

sed -e "s/foo/bar/g" test.txt > tmp.txt && mv tmp.txt test.txt

2
Windows kullanıcıları hemen dosya değiştirmeden önce: sed'in yeni sürümleri yerinde düzenleme ile desteklenir -i! Sed sürümünüz varsa, şu yanıttan komutu kontrol edin: stackoverflow.com/a/33762001/2492801 .
Benjamin Bihler


2

@Rachel mükemmel bir cevap verdi ama burada bir powershell $datadeğişkenine içerik okumak için bir varyasyon var . Daha sonra bir çıktı dosyasına yazmadan önce içeriği birden çok kez kolayca işleyebilirsiniz. Ayrıca .bat toplu iş dosyalarında çok satırlı değerlerin nasıl verildiğine de bakın.

@REM ASCII=7bit ascii(no bom), UTF8=with bom marker
set cmd=^
  $old = '\$Param1\$'; ^
  $new = 'Value1'; ^
  [string[]]$data = Get-Content 'datafile.txt'; ^
  $data = $data -replace $old, $new; ^
  out-file -InputObject $data -encoding UTF8 -filepath 'datafile.txt';
powershell -NoLogo -Noninteractive -InputFormat none -Command "%cmd%"

2

Windows 7+ için .bat içinde powershell kullanma

utf8 kodlaması isteğe bağlıdır, web siteleri için iyi

@echo off
set ffile='myfile.txt'
set fold='FOO'
set fnew='BAR'
powershell -Command "(gc %ffile%) -replace %fold%, %fnew% | Out-File %ffile% -encoding utf8"

1

Cygwin'i indirin (ücretsiz) ve Windows komut satırında unix benzeri komutları kullanın.

En iyi bahsiniz: sed


10
Cygwin kötülüktür. Kurma. Aşağıda belirtilen UnixUtils'i daha iyi kullanın.
zedoo

24
Bu kadar kötü olan ne?
jm.

@jm İstediğiniz zaman tek bir yürütülebilir dosya kullanmak yerine her şeyi birlikte yüklemeniz gerekebilir.
Andry

Powershell'i daha iyi kullanın, aslında pencerelerde yerleşiktir.
Preza8

0

Https://zoomicon.github.io/tranXform/ adresindeki Replace ve ReplaceFilter araçlarını da görebilirsiniz (kaynak dahil). İkincisi bir filtredir.

Dosyalardaki dizeleri değiştiren araç VBScript'te (eski Windows sürümlerinde çalışması için Windows Script Host [WSH] gerekir)

En yeni Delphi (veya FreePascal / Lazarus) ile yeniden derlemediğiniz sürece filtre muhtemelen Unicode ile çalışmıyor


-5

Visual C ++ altında kodlama yaparken bu sorunla birkaç kez karşılaştım. Varsa, Visual studio Bul ve Değiştir Yardımcı Programı'nı kullanabilirsiniz. Bir klasör seçmenize ve o klasördeki herhangi bir dosyanın içeriğini istediğiniz herhangi bir metinle değiştirmenize olanak tanır.

Visual Studio altında: Düzenle -> Bul ve Değiştir Açılan iletişim kutusunda klasörünüzü seçin ve "Ne Bul" ve "Şununla Değiştir" kutularını doldurun. Umarım bu yardımcı olacaktır.


2
Nadjib, cevabınız kullanıcıya yardımcı olmuyor, çünkü bahsetmedikleri yazılım kullandıklarını varsayıyorsunuz. Lütfen yazılım gerektirmeyen bir seçenek önerin.
Aibrean

@ Cevabın cevabı işe yaramaz, ancak bu nedenle yanlış giriş noktasıdır.
Paul
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.