我一直在使用 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"
资源:
- http://ss64.com/ps/replace.html
- http://blogs.technet.com/b/heyscriptingguy/archive/2008/01/17/how-can-i-use-windows-powershell-to-replace-characters-in-a-text-file.aspx
屁
为了屁特别是空格问题,我认为你只需要在传递给它的字符串周围添加双引号。试一试,然后也许你可以继续使用它而不需要进一步的改变。
例子
"%~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% 有效的。