AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1768136
Accepted
bat_cmd
bat_cmd
Asked: 2023-02-12 07:01:26 +0800 CST2023-02-12 07:01:26 +0800 CST 2023-02-12 07:01:26 +0800 CST

Dividir um comando do Powershell em várias linhas ao usar em um arquivo em lote?

  • 772

Este comando funciona para substituir instâncias de OldText1, OldText2e OldText3em um arquivo txt, por NewText1, NewText2e NewText3quando o comando está em uma linha em um arquivo em lote da seguinte forma:

start /wait /min Powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Get-ChildItem 'Old and New text.txt' | ForEach-Object {(Get-Content $_) -replace 'OldText1', 'NewText1' -replace 'OldText2', 'NewText2' -replace 'OldText3', 'NewText3' | Set-Content $_.FullName}"

Se eu tentar usar o ^símbolo para dividir o comando (que normalmente funciona em um arquivo em lote), ele não funcionará. Por exemplo, isso não funciona, nada é substituído no arquivo txt:

start /wait /min Powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Get-ChildItem 'Old and New text.txt' | ForEach-Object {(Get-Content $_) ^
-replace 'OldText1', 'NewText1' ^
-replace 'OldText2', 'NewText2' ^
-replace 'OldText3', 'NewText3' ^
| Set-Content $_.FullName}"

Usar backticks também não funciona (mas não funcionaria porque este não é um script PS1):

start /wait /min Powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Get-ChildItem 'Old and New text.txt' | ForEach-Object {(Get-Content $_) `
-replace 'OldText1', 'NewText1' `
-replace 'OldText2', 'NewText2' `
-replace 'OldText3', 'NewText3' `
| Set-Content $_.FullName}"

Tenho perguntado aquela coisa do bot de bate-papo a manhã toda e não consigo pensar em nada que funcione. Na metade do tempo, ele continua colocando o comando em uma linha novamente e estou apenas andando em círculos com ele.

É impossível fazer o que estou tentando fazer?

A razão pela qual quero dividir o comando em várias linhas é simplesmente porque quero ser capaz de ler o que está sendo substituído sem ter que olhar horizontalmente ao longo (o que eventualmente será) um comando massivo. Pretendo adicionar muito mais comandos de substituição do que este, mas não está funcionando nem para três comandos de substituição... ainda!

Agradeço antecipadamente a qualquer pessoa que possa saber por que isso não está funcionando.

windows
  • 1 1 respostas
  • 52 Views

1 respostas

  • Voted
  1. Best Answer
    Io-oI
    2023-02-12T14:09:00+08:002023-02-12T14:09:00+08:00

    Isso não está claro para mim:

    Get-ChildItem 'Old and New text.txt' | ForEach-Object {(Get-Content $_)

    Esta parte sugere que você obterá itens em uma pasta, precisamente itens que são arquivos, mas imediatamente seu comando define um arquivo onde as substituições de string serão feitas diretamente no conteúdo.

    Veja, removendo essa parte, as substituições saíram conforme o esperado, mas se for para vários arquivos para as mesmas substituições, sugiro editar a pergunta. Embora confuso, para manipulação de conteúdo você não precisa de " Get-ChildItem 'Old and New text.txt' | ...", e pode usar diretamenteGet-Content 'Old and New text.txt' ^|...

    start "" /wait /min powershell.exe -NoP -Ex -By -c ^
    "$Strings=Get-Content 'Old and New text.txt' ^| %% ^
       ^{ $_ -replace('OldText1','NewText1')^
             -replace('OldText2','NewText2')^
             -replace('OldText3','NewText3')^}^
        ; sc 'Old and New text.txt' -Value $Strings -Force"
    
    • 1

relate perguntas

  • Como desativar a aceleração do mouse em um touchpad de precisão do Windows?

  • renomear em massa conjuntos de arquivos de imagem

  • Qual seria o equivalente em lote do argumento "pass" do Python?

  • Comunique-se com o daemon do Docker no Windows

  • atalho do shell da área de trabalho no painel lateral do explorer

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve