4

Я использовал FART и простой пакет для редактирования текстового файла с помощью команды out use команды net use:

в моем текстовом файле при необходимости часто менять У меня есть определенный путь changeme\software\sql

в пакетном использовании сети показывает расположение общей папки в сети работа \ сервер \ общий доступ

Я "помечаю" это в окне CMD и вставляю в приглашение ввода пользователя

тогда FART заменит changeme на \server \shared для полного завершения в \server \shared \software \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%

2 ответа2

0

Попробуйте это на 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% работа для меня.

0

Powershell

Пример синтаксиса 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"

Ресурсы:


ПЕРДЕТЬ

Для проблемы FART с пробелами, я думаю, вам просто нужно добавить двойные кавычки вокруг строк, которые вы передаете ему. Сделайте это, и тогда, возможно, вы сможете продолжать использовать его без дальнейших изменений.

ПРИМЕР

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

Вы также можете добавить ключ -V (см. Пример ниже), чтобы получить подробные подробности сообщения об ошибке, если это необходимо для дальнейшего устранения неполадок, но я решил эту проблему с помощью FART и пробела в строке замены, добавив двойные кавычки вокруг, как в моем примере № 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .