質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

解決済

1回答

27967閲覧

ファイルの最後の文字を削除

tkck

総合スコア32

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

0クリップ

投稿2017/01/23 06:15

ファイルの最後の行の
最後の1文字を削除するには
どのように書いたらいいでしょうか

ファイル全体で特定の文字列削除、
特定の場所の切り出しなどは
参考サイトを見つけられたのですが
特定の場所の削除方法についてが分からず
詰まっています。

for /f "delims=" %%A in (index.txt) do (
set line=%%A
)
echo %line:~-1%=%

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2017/01/23 09:29

これはどうしてもコマンドプロンプトでしなければなりませんか?できないことはありませんが、特にファイルが大きくなると時間がかかります。PowerShellであればもっと簡単に高速にすることができますが。
tkck

2017/01/24 01:29

ありがとうございます。今回はコマンドプロンプト内で納めたいです。PowerShellだと高速化が可能なんですね。頭に入れておきます。
guest

回答1

0

ベストアンサー

環境変数の置換と部分文字列をごっちゃにしていますね。それぞれ全く別物です。
set /? に、まさに

%PATH:~0,-2%

は最後の 2 文字以外のすべてが展開されます。

という例があります。

DOS

1for /f "delims=" %%A in (index.txt) do ( 2set line=%%A 3call :sub 4) 5goto :eof 6:sub 7echo %line:~0,-1%

ただ、バッチスクリプトでのテキスト処理は、ファイルにバッチスクリプトでの特殊文字が含まれていると、途端に困難ないし不可能になるので、そういう場合は他のツールを使った方が良いでしょうね。

#追記(訂正)
質問を読み誤ってました。行末の1文字を削除じゃなくて、最終行のみなんですね。
ちょっと面倒ですが、1行ずつ遅らせるしか無い。やっぱり他のツールを使うべきかな。

DOS

1@echo off 2set last= 3for /f "delims=" %%A in (index.txt) do ( 4 set line=%%A 5 call :sub 6) 7echo %last:~0,-1% 8goto :eof 9:sub 10if not "%last%" == "" ( 11 echo %last% 12) 13set last=%line%

投稿2017/01/23 13:59

編集2017/01/24 02:03
otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkck

2017/01/24 01:23

回答ありがとうございます。 他のツールを使ったほうがいいんですね... コマンドプロンプト使い慣れておらず 参考サイトを探して迷走しておりました。 回答いただいたソースを読んで 勉強いたします。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問