Если ваша цель - отредактировать / заменить файлы специальными символами , это может вам помочь.
Помимо проблемы с вашим оригинальным сценарием, я не только создал работающее решение, но и переработал его с улучшенными функциями исполнения. Текущий скрипт, который вы используете, не сохраняет пустых строк.
@echo off
@setLocal enableDelayedExpansion
set "InputFile=file.csv"
set "OriginalText=Hello There"
set "ReplacedText=Hello > There"
REM | Make sure we only edit the proper line.
FOR /F "delims=" %%n IN ('findstr /n "^" %InputFile%') DO (
SET "line=%%n"
SET "Modified=!line:%OriginalText%=%ReplacedText%!"
SET "Modified=!Modified:*:=!"
REM | Output the entire edited CSV to a temporary file.
>> %InputFile%.TEMP ECHO(!Modified!
)
Rem | Delete Original File, Restore New
DEL %InputFile%
REN %InputFile%.TEMP %InputFile%
goto :EOF
Ниже я попытаюсь объяснить, что делает каждая команда SET
.
SET "line=%%n"
- Установить текущий %%A
в строку. (Это будет строка) SET "Modified=!line:%OriginalText%=%ReplacedText%!"
- Заменить строку, содержащую %OriginalText%
, на соответствующий результат %ReplaceText%
. SET "Modified=!Modified:*:=!"
- Удалить 1:
, 2:
, 3:
, exc, созданный findstr /n
>> %InputFile%.TEMP ECHO(!Modified!
выведет эту претикулярную строку в новый текстовый файл . [1 152]
Я лично предположил бы, что если вы используете set "String="
с кавычками, любая другая команда set
также использует их. Есть некоторые исключения, но в этом случае используйте их!
РЕДАКТИРОВАТЬ:
Так как кажется, что OP запрашивает поддержку специальных символов from
& amp ; to
текст, это будет обновленный метод.
Прежде всего, это можно сделать командой из 15 символов powershell
. Если вам не нужен чистый пакетный метод и вы хотите сделать его гибридным, я предлагаю это сделать. Однако, для чистого пакетного решения, продолжайте читать.
Пакетное время трудно обрабатывать специальные символы в функции без каких-либо поломок. Тем не менее, это все еще можно сделать, и я выведу вас на правильный путь.
Ниже приведены два сценария, ReplaceScript.bat
и MainCode.Bat
.
MainCode.Bat
- это ваш сценарий основного пакета. Может быть любым именем. ReplaceScript.bat
- это скрипт, к которому мы будем call
обращаться из MainCode.Bat. This replace script file can be pasted at the bottom of
MainCode.Bat` при желании, но из-за размера я предпочитаю его опускать. Чтобы использовать ReplaceScript.bat
- это выглядит следующим образом:
Rem | Usage: call "1" "2" "3" "4" "5" Rem | call - Calls external script Rem | "1" - Name of External script Rem | "2" - File to Edit Rem | "3" - Text to replace ex: red apple Rem | "4" - Text to replace to ex: green apple Rem | "5" - Output file
blockquote>
call "%ReplaceScript%" "%InputTEXT%" "%SEARCHTEXT%" "%REPLACETEXT%" "%OutputTEXT%"
MainCode.bat:
@ECHO OFF set "InputFile=file.csv" set "OriginalText=Hello There" set "ReplacedText=Hello > There" Rem | Call Replace Script call "ReplaceScript.bat" "%CustomINI%" "%OriginalText%" "%ReplacedText%" "%InputFile%.TEMP" Rem | Delete Original File, Restore New DEL %InputFile% REN %InputFile%.TEMP %InputFile% goto :EOF
ReplaceScript.bat: (НЕ СДЕЛАНО МНЕ; Уважаемый владелец неизвестен - если это ваше, свяжитесь со мной)
<час>@echo off setlocal EnableExtensions DisableDelayedExpansion set "FILE_I=%~1" set "SEARCH=%~2" set "REPLAC=%~3" set "FILE_O=%~4" set "FLAG=%~5" if not defined FILE_I exit /B 1 if not defined SEARCH exit /B 1 if not defined FILE_O set "FILE_O=con" if defined FLAG set "FLAG=#" for /F "delims=" %%L in (' findstr /N /R "^" "%FILE_I%" ^& break ^> "%FILE_O%" ') do ( set "STRING=%%L" setlocal EnableDelayedExpansion set "STRING=!STRING:*:=!" call :REPL RETURN STRING SEARCH REPLAC %FLAG% >> "%FILE_O%" echo(!RETURN! endlocal ) endlocal exit /B :REPL rtn_string ref_string ref_search ref_replac flag setlocal EnableDelayedExpansion set "STR=!%~2!" set "SCH=!%~3!" set "RPL=!%~4!" if not defined SCH endlocal & set "%~1=" & exit /B 1 set "SCH_CHR=!SCH:~,1!" if not "%~5"=="" set "SCH_CHR=" if "!SCH_CHR!"=="=" set "SCH_CHR=" & rem = terminates search string if "!SCH_CHR!"==""^" set "SCH_CHR=" & rem " could derange syntax if "!SCH_CHR!"=="%%" set "SCH_CHR=" & rem % ends variable expansion if "!SCH_CHR!"=="^!" set "SCH_CHR=" & rem ! ends variable expansion call :LEN SCH_LEN SCH call :LEN RPL_LEN RPL set /A RED_LEN=SCH_LEN-1 set "RES=" :LOOP call :LEN STR_LEN STR if not defined STR goto :END if defined SCH_CHR ( set "WRK=!STR:*%SCH_CHR%=!" if "!WRK!"=="!STR!" ( set "RES=!RES!!STR!" set "STR=" ) else ( call :LEN WRK_LEN WRK set /A DFF_LEN=STR_LEN-WRK_LEN-1,INC_LEN=DFF_LEN+1,MOR_LEN=DFF_LEN+SCH_LEN for /F "tokens=1,2,3 delims=," %%M in ("!DFF_LEN!,!INC_LEN!,!MOR_LEN!") do ( rem set "RES=!RES!!STR:~,%%M!" if defined WRK set "WRK=!WRK:~,%RED_LEN%!" if "!STR:~%%M,1!!WRK!"=="!SCH!" ( set "RES=!RES!!STR:~,%%M!!RPL!" set "STR=!STR:~%%O!" ) else ( set "RES=!RES!!STR:~,%%N!" set "STR=!STR:~%%N!" ) ) ) ) else ( if "!STR:~,%SCH_LEN%!"=="!SCH!" ( set "RES=!RES!!RPL!" set "STR=!STR:~%SCH_LEN%!" ) else ( set "RES=!RES!!STR:~,1!" set "STR=!STR:~1!" ) ) goto :LOOP :END if defined RES ( for /F delims^=^ eol^= %%S in ("!RES!") do ( endlocal set "%~1=%%S" ) ) else endlocal & set "%~1=" exit /B :LEN rtn_length ref_string setlocal EnableDelayedExpansion set "STR=!%~2!" if not defined STR (set /A LEN=0) else (set /A LEN=1) for %%L in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do ( if defined STR ( set "INT=!STR:~%%L!" if not "!INT!"=="" set /A LEN+=%%L & set "STR=!INT!" ) ) endlocal & set "%~1=%LEN%" exit /B
Я лично предположил бы, что если вы используете
set "String="
с кавычками, любая другая командаset
также использует их. Есть некоторые исключения, но в этом случае используйте их!Для получения дополнительной помощи или понимания любой из команд выполните следующее:
call /?
set /?
for /?
if /?
goto /?
- и т. Д.
С точки зрения графики, Даниэль Кук из Lost Garden выпускает очень качественную, многоразовую игру искусство, бесплатное как для личной, так и для коммерческой работы (см. подробности его лицензии ). Вот индекс его постов, связанных с бесплатной графикой , просто нажмите ссылку «читать дальше» внизу статьи, и вы найдете ссылки на загрузки.
edit: в терминах звуковых эффектов, Soundrangers довольно приличный, если вы думаете о чем-то конкретном, но он может быстро стать дорогим. Для сложной игры, если вам нужен богатый пользовательский опыт, вам понадобятся десятки, если не сотни звуковых эффектов. На пару баксов поп, это складывается очень быстро. Во многих местах (в том числе Soundrangers ) предлагаются тематические звуковые пакеты, которые дают вам немного больше отдачи от затраченных средств, но все же это не бесплатно. GameDev также имеет список аудио ресурсов .
Что касается музыки, я думаю, что ваши варианты лучше. В зависимости от того, что вы ищете (эмбиент, инструментал, вокал и т. Д.). Я бы серьезно подумал о том, чтобы обратиться к местным независимым музыкантам и использовать имеющиеся у них треки. Скорее всего, они позволят вам использовать их музыку бесплатно (с соответствующей аккредитацией) или по разумной цене.
ищу (эмбиент, инструментал, вокал и т. д.). Я бы серьезно подумал о том, чтобы обратиться к местным независимым музыкантам и использовать имеющиеся у них треки. Скорее всего, они позволят вам использовать их музыку бесплатно (с соответствующей аккредитацией) или по разумной цене. ищу (эмбиент, инструментал, вокал и т. д.). Я бы серьезно подумал о том, чтобы обратиться к местным независимым музыкантам и использовать имеющиеся у них треки. Скорее всего, они позволят вам использовать их музыку бесплатно (с соответствующей аккредитацией) или по разумной цене.GarageGames.com продает множество подобных вещей ... 3d модели, текстуры, фоновую музыку и т. Д.
http://garagegames.com и, в частности, http://www.garagegames.com/products/browse
HTH
редактировать: упс, я не видел "бесплатное" требование! Выполните поиск по "Creative Commons", и вы найдете много музыки, по крайней мере, и немного графики.
Я только что обнаружил этот сайт на днях, когда искал некоторые звуковые эффекты:
Похоже, они Вы без лицензионных платежей, но большинство звуков стоит доллар или два. Похоже, что некоторые звуки бесплатны.
Я рекомендую Sound Snap , они позволяют 5 бесплатных загрузок в месяц для бесплатных учетных записей и многое другое, если вы зарегистрируетесь. Я использую их последние пару месяцев для игр, которые я разработал.
Не знаю, является ли это это то, что вам нужно, но Game Sprite Archives содержит огромную коллекцию спрайтов SNES / NES / Anything до игровой приставки 1.
Там есть http://www.freesound.org/
У большинства вещей есть лицензия, которая например, несовместим с Fedora, хотя, если вы спросите правообладателя, иногда они будут лицензировать вещи под другой лицензией.
Музыка труднее найти, чем звуковые эффекты. Вы можете попытаться покопаться на сайте archive.org, скажем здесь: http://www.archive.org/details/muzic
Также посмотрите sfxr http://www.cyd.liu.se /~tompe573/hp/project_sfxr.html хотя звуки, которые он издает, звучат довольно старой школы - и если это то, что вы ищете, это круто, в противном случае он может создать некоторые звуковые эффекты.
Если вы ищете интересные текстуры, я бы предложил проверить Filter Forge . Вы можете скачать фильтры для использования в Adobe Photoshop или использовать образцы изображений на сайте для создания текстурных карт для различных типов местности и материалов.