Výměna určitého textu v souboru za název souboru (kontext.menu)
Ahoj chlapi, obracím se zase s problémem, který sám nedokážu vyřešit.
Potřebuju v označených souborech změnit určitý text(s tím si poradím pomocí reg.exp)
za text, který je názvem tohoto souboru bez přípony. Dal by se využít parametr vracející
pouze název souboru %~nX u příkazu FOR, jenže už netuším, jak ho zakomponovat do celého příkazu.
Tokens a delims jsou pro mne španělská vesnice Příkaz sed už tak nějak díky Losovi a Taouchwoodovi zvládám, ale zase
v něm nemůžu použít %~nX.
Struktura souborů je následující:
0 BEGIN PGM 11_002 MM
.další řádky programu
.
.
179978 END PGM 11_002 MM
Potřebuji vybrat text mezi PGM a MM (v tomto případě 11_002) a nahradit ho názvem souboru bez přípony.
Jedná se vždy o první a poslední řádek, je to program pro CNC.
A aby toho nebylo málo, tak bych chtěl příkaz zakomponovat do kontextového menu, prostě provádět operaci jen s určitými soubory.
Ve WXP, tak W7_64bit vím, kam a co vložit za klíče, jen prostě netuším jak zapsat to hlavní, příkaz). Pokud by to nebylo na jeden řádek,
volal bych bat externě s parametrem, to by taky nevadilo.
Ještě otázka, příkaz vyvolaný z registru se chová jako spuštěný z příkaz.řádku nebo jako z bat,cmd? Kvůli zápisu proměnných % nebo %%
Díky za případné pošťouchnutí, radu, jakým směrem se vydat...
pro odeslání opravovaného souboru pravým myšem přes 'sendto' do zástupce batky. nepředpokládám název souboru s mezerou:
Díky, použil jsem SET a vyřešil jsem to prozatím takto a funguje to:
cnc.bat
a do registrů přidal toto:
zkusil jsem tohle celé nacpat do REG_SZ abych nemuset volat batku, ale asi tomu budou vadit uvozovky. Nefunguje ani bez uvozovek.
Trápí mě ještě jedna a to zásadní věc, bez které je mi tohle celé nanic. Potřebuju obsah proměnné fname převést na velká písmena.
Zkusil jsem zase použít sed, jenže se příkaz zasekne a nepokračuje, ani chyb.hláška
Poradí někdo, jak na změnu? Díky
a len tak na okraj: chodí Ti tá batka s viacerými vybranými súbormi?
Díky, ale tahle kombinace mi nefunguje. Používám GNU sed v 4.0.7
Po úpravě na
vyběhne chybová hláška:
sed: -e expression #1, char 13: Invalid reference \1 on `s' command's RHS, proto jsem přidal zpětná lomítka. Po úpravě na
chyba: sed: can't read $fname: No such file or directory. Nejspíš pracuje jen se soubory
Teď na výstup koukám... s více soubory to přes SendTo nejde, batka vezme jen první.
Přes registry (vyvolání batky) vezme všechny, jen vyběhne na moment spousta oken, což by nevadilo.
Našel jsem možnost na změnu velikosti, jen je to trochu krkolomné :
cnc.bat
Ještě to musím otestovat s více kombinacemi názvů