在文本文件中查找并替换文本(包括空格!)

在文本文件中查找并替换文本(包括空格!)

我一直在使用 FART 和简单批处理来编辑 txt 文件,并使用 net use 命令的输出:

在我需要经常更改的文本文件中,我有一个定义的路径 改变我自己\软件\sql

在批处理中,net use 显示网络上共享文件夹的位置 \server\shared

我在 CMD 窗口中“标记”它并粘贴到用户输入提示中

那么 FART 将会取代改变我自己使用 \server\shared 完全完成 \服务器\共享\软件\sql

这一直工作得很好,直到今天,在共享路径上有一个空格

\服务器\共享区域

FART 无法识别空格和断点,并且存在语法错误等。我查看了所有开关,似乎没有一个能让我替换带有空格的文本。

有没有更好的方法可以做到这一点,更好的工具,看到 power shell 很好,但我不知道我会到达哪个版本,因此更改代码以适应版本可能会更加麻烦。

想知道我是否可以批量完成此操作而不会放屁。非常感谢

echo.
type "%~dp0logo.txt"
echo.
echo.
echo F| XCOPY "%~dp0Software\client.txt" /y "%~dp0DSoftware\config.cfg" 
net use
pause
set /p N=enter shared:
"%~dp0Software\fart" -i -r "%~dp0Software\config.cfg" \\changeme %N%

答案1

电源外壳

下面是用于在特定文件中查找和替换字符串的 PowerShell 语法示例。

例子

(Get-Content "C:\Users\user\Desktop\testtestzzz.txt") | 
Foreach-Object {$_.replace("\\changeme", "\\server\share name")} | 
Set-Content "C:\Users\user\Desktop\test\testzzz.txt"

资源:


为了特别是空格问题,我认为你只需要在传递给它的字符串周围添加双引号。试一试,然后也许你可以继续使用它而不需要进一步的改变。

例子

"%~dp0Software\fart" -i -r "%~dp0Software\config.cfg" "\\changeme" "%N%"

-V如果需要进一步排除故障,您还可以添加大写开关(见下面的示例)以获取错误消息的详细信息,但我已经解决了这个问题并在替换字符串中添加一个空格,方法是在其周围添加双引号,如下面的示例#2 所示。

示例 #2

fart -i -C -V "C:\Users\user\Desktop\test\testzzz.txt" "\\changeme" "\\server\share name"

-r如果您只更改单个文件(即 config.cfg)中的文本,您可能还需要考虑排除该选项。以下是FART /?我看到的解释选项的选项。

Usage: FART [options] [--] <wildcard>[,...] [find_string] [replace_string]

Options:
 -h, --help          Show this help message (ignores other options)
 -q, --quiet         Suppress output to stdio / stderr
 -V, --verbose       Show more information
 -r, --recursive     Process sub-folders recursively
 -c, --count         Only show filenames, match counts and totals
 -i, --ignore-case   Case insensitive text comparison
 -v, --invert        Print lines NOT containing the find string
 -n, --line-number   Print line number before each line (1-based)
 -w, --word          Match whole word (uses C syntax, like grep)
 -f, --filename      Find (and replace) filename instead of contents
 -B, --binary        Also search (and replace) in binary files (CAUTION)
 -C, --c-style       Allow C-style extended characters (\xFF\0\t\n\r\\ etc.)
     --cvs           Skip cvs dirs; execute "cvs edit" before changing files
     --svn           Skip svn dirs
     --remove        Remove all occurences of the find_string
 -a, --adapt         Adapt the case of replace_string to found string
 -b, --backup        Make a backup of each changed file
 -p, --preview       Do not change the files but print the changes

答案2

在 Windows PowerShell 上尝试此操作。

    (Get-Content "C:\Users\user\Desktop\test.txt") | 
Foreach-Object {$_.replace("find what", "replace what")} | 
Set-Content "C:\Users\user\Desktop\test\test.txt"

这对我来说是 100% 有效的。

相关内容