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

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

新規登録して質問してみよう
ただいま回答率
85.48%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

2回答

1108閲覧

テキストに書き出し後、テキスト内容の取得を行うと想定の数字から48が加算された状態で出力されてしまう問題の解消方法

KEN1115

総合スコア22

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

1クリップ

投稿2023/05/30 10:27

実現したいこと

1.テキストの内容通りの数値を取得したい。(出力前に48を減算する等はナシ)
2.何故48が加算されてしまうのかを知りたい。

前提

Windows10
VSCODE

発生している問題・エラーメッセージ

想定の数字でない値が出力されてしまう。

該当のソースコード

PowerShell

1Write-Output 1 |Out-File "J:\batch\h\text\終了フラグ.txt" 2$終了 = [int](Get-Content J:\batch\h\text\終了フラグ.txt)[0] 3write-host $終了

出力内容:49

試したこと

下記2つのソースコードを実行
Write-Output 0 |Out-File "J:\batch\h\text\終了フラグ.txt"
$終了 = [int](Get-Content J:\batch\h\text\終了フラグ.txt)[0]
write-host 出力内容:$終了

出力内容:48

Write-Output 2 |Out-File "J:\batch\h\text\終了フラグ.txt"
$終了 = [int](Get-Content J:\batch\h\text\終了フラグ.txt)[0]
$終了 -= 48
write-host 出力内容:$終了

出力内容:2

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

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

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

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

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

Zuishin

2023/05/30 13:28

> 出力前に48を減算する等はナシ 減算しないと 1 ではなく '1' が書き込まれるので。
guest

回答2

0

何の目的で[0]を付けたのでしょうか?付けなければ良いです。

PowerShelll

1Write-Host "1".GetType() ・・・・・ System.String 2Write-Host "1"[0].GetType() ・・・・・ System.Char 3Write-Host ([char]"1").GetType() ・・・・・ System.Char 4 5Write-Host ([int]"1") ・・・・・ 1 6Write-Host ([int]"1"[0]) ・・・・・ 49 7Write-Host ([int][char]"1") ・・・・・ 49

投稿2023/05/30 15:04

otn

総合スコア84533

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

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

0

ベストアンサー

■テキストファイル取得時の問題を解決する サンプルプログラム

PowerShell

1# 1.テキストの内容通りの数値を取得したい。 2# 答え:Get-Content命令の注意点:txtファイルの中身が1行の場合は@マークを付けてください 3 4Write-Output 1 | Out-File "J:\batch\h\text\終了フラグ.txt" 5$終了 = [int]@(Get-Content "J:\batch\h\text\終了フラグ.txt")[0] # ← @マークを付けると正常に動作します 6write-host 出力内容:$終了 7 8# 出力内容:1

PowerShell

1# 2.何故48が加算されてしまうのかを知りたい。 2# 答え:Write-Output 0 の「 0 」はASCIIコード(アスキーコード)に変換すると48になります。 3 4Write-Output 0 |Out-File "J:\batch\h\text\終了フラグ.txt" 5$終了 = [int](Get-Content "J:\batch\h\text\終了フラグ.txt")[0] 6write-host 出力内容:$終了 7 8# 出力内容:48 9 10# ■資料■ASCIIコード表 http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html 11# 12# 10進 16進 文字 13# : 14# : 15# 48 0x30 0 ← ここ 16# 49 0x31 1 17# 50 0x32 2 18# : 19# :

※簡単な説明で申し訳ございません。
※詳しくはWEB検索をご利用ください。

投稿2023/05/30 14:14

ccc-

総合スコア342

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問