Como pesquisar e substituir uma string em um arquivo com cmd ou PowerShell?

9

Eu tenho um arquivo .txt no qual desejo substituir a string aaa por bbb .

Eu tentei o seguinte código do PowerShell:

Get-Content c:.txt | ForEach-Object { $_ -replace "aaa", "bbb" } | Set-Content c:.txt

Eu recebo um erro que 1.txt está sendo usado por outro processo. O que estou fazendo errado?

    
por Elad Benda 11.12.2012 / 10:34

2 respostas

15
(get-content c:.txt) | foreach-object {$_ -replace "prod", "qa1"} | set-content c:.txt

Os parênteses em torno de Get-Content garantem que a operação Get seja concluída antes do início da operação Set, sem que as duas funções tentem acessar o arquivo ao mesmo tempo.

    
por 11.12.2012 / 10:40
0

Eu estou querendo saber como é que quando eu faço uma ferramenta útil para alguém que pode estar precisando desesperadamente de substituir uma string em um arquivo e fazer o upload em um site de upload grátis, baixado gratuitamente, uma ferramenta gratuita, mais uma vez, como é que eu me tornei um spammer ??? Eu sou um programador muito respeitável e antigo no meu país, ninguém me chamava de spammer até agora. Agora devo fazer o upload do código fonte para manter meu prestígio ...

Agora percebi que COMUNIDADE é um robô e tudo bem comigo ...

A fonte é compilável com o FPC.

Program ReplaceString;
var
  fs,fd:file of char;
  rdchar:char;
  cnt1:byte;
  ocur:longint;
  instr,outstr,tempstr:string;

function fileexists(filename:string):boolean;
var
  f:file;
begin
  {$I-} assign(f,FileName);reset(f);close(f); {$I+}
  fileexists:=(ioresult=0) and (filename<>'');
end;

procedure chkstr;
var
  tmp1:char;
  numread,cnt2:byte;
begin
  numread:=1;
  tempstr[1]:=rdchar;
  repeat
    read(fs,tmp1);
    inc(numread);
    tempstr[numread]:=tmp1;
  until (numread=length(instr)) or (instr[numread]<>tempstr[numread]);
  if (numread<length(instr)) or (instr[numread]<>tempstr[numread]) then
    for cnt2:=1 to numread do begin
      tmp1:=tempstr[cnt2];
      write(fd,tmp1);
    end else begin
      for cnt2:=1 to length(outstr) do begin
        tmp1:=outstr[cnt2];
        write(fd,tmp1);
      end;
      inc(ocur);
      write('Occurrences: ',ocur);
      for cnt2:=1 to 20 do write(chr(8));
    end;
end;

begin
  writeln('File string replacer v.1.0 for WIN32 by Rares Atodiresei (P)2018');
  if paramcount<>3 then begin
    writeln('Usage: Repstr32.exe <infile> <target string> <replacement string>');
    halt(1);
  end;
  if not fileexists(paramstr(1)) then begin
    writeln('File ',paramstr(1),' does not exist.');
    halt(1);
  end;
  writeln;
  ocur:=0;
  write('Searching...');
  for cnt1:=1 to 15 do write(chr(8));
  instr:=paramstr(2);
  outstr:=paramstr(3);
  assign(fs,paramstr(1));reset(fs);
  assign(fd,'_'+paramstr(1));rewrite(fd);
  while not eof(fs) do begin
    read(fs,rdchar);
    if rdchar=instr[1] then chkstr else write(fd,rdchar);
  end;
  close(fd);close(fs);
  if ocur=0 then begin
    write('Target string not found.');
    for cnt1:=1 to 25 do write(chr(8));
    erase(fd);
  end else begin
    erase(fs);rename(fd,paramstr(1));
  end;
  writeln;writeln;writeln('Done.');
end.
    
por 01.11.2018 / 11:19