痔になりやすい生活習慣とは?

バッチが使いたい初心者です。(windows 7)

大量の画像のフォルダをまとめるためにバッチを使いたいです。
助けて頂けないでしょうか。。。

(batの中身)
@echo off
pushd %~dp0
for /f %%i in (namelist.txt) do mkdir %%i
for /f %%j in (namelist.txt) do copy "*%%j*" %%j
exit

(namelistの中身)
あ\A
あ\B
い\C
い\D
い\E
う\F
続く・・・

↑この内容でバッチをまわすと、「あ」の中に「A」まではうまくフォルダができますが
「A」の中身は空っぽになってしまいます。

namelistの中身を以下の内容にすれば中身はきちんとコピーされます。
A
B
C
D
続く・・・

でも、できればフォルダを2段階にしたいのです。どこを直したらいいのでしょうか?
教えていただけると非常に助かります。よろしくお願いいたします。

「画像フォルダをまとめるバッチ作成について」の質問画像

A 回答 (2件)

以下のような感じでいかがでしょうか。



ざっと書いただけなので、スマートではない部分や、不具合、対応出来ないケースもあるかも知れませんが、その場合は、その旨を補足されるか、そちらで修正してみてください。こちらで動作確認はしています。

対象フォルダは、バッチファイルがあるフォルダです。

―――――――――――――――――

@echo off
pushd "%~dp0"
for /f "usebackq delims=" %%i in (`type "namelist.txt"`) do mkdir "%%i"
for /f "usebackq tokens=1-2 delims=\" %%j in (`type "namelist.txt"`) do copy "%%k*" "%%j\%%k\"
pause
exit

―――――――――――――――――

簡単な解説は以下の通りです。詳細はWEB検索なさってください。

―――――――――――――――――

【 usebackq 】
in部分の「`」で囲まれた部分のコマンド実行結果を、対象ファイル(対象データ)とする。

【 delims= 】
取り出した1行内の、「トークン」(区切られた文字列、単語)の「区切りとなる文字」を指定する。「delims=」の後に何も書かなければ「区切り無し」の意味となる。つまり、1行まるごと「%%アルファベット」に入る。この指定(delims=)自体をしない場合は「タブとスペース区切り」となる。「delims=」の記述場所は、「"xxx xxx delims="」のように、最後に書く。(半角スペースを指定する場合もある為。)

【 tokens= 】
何番目のトークンを取り出すか指定する。
「1-3」は「1~3」の意。
「1,3」は「1と3」の意。
「1-3,5」は「1~3と5」の意。
2つ目以降のトークンは、開始アルファベットの次のアルファベットに格納される。
「%%a」開始なら、2つ目は「%%b」に入る。

【 type 】
テキストファイルの内容を表示するコマンド。

【 "%%k*" 】
今回の場合は、「(2番目のトークン)~」を表す。「a*」のような感じ。

【 "%%j\%%k\" 】
今回の場合は、「(1番目のトークン)\(2番目のトークン)\」を表す。「あ\A\」のような感じ。今回のようにコピー先に指定する場合は、最後が「\」で終わっているので、「このフォルダ内にコピーする」という意味になる。ファイル名はコピー元と同じ。逆に、コピー先が「あ\A」のように「\」で終わらない場合は、「ファイル指定」とみなされる。しかし、「同名のフォルダ」が存在する場合は、そのファイルは作成出来ず、エラーとなる。

【 pause 】
一時停止コマンド。

―――――――――――――――――

1つ目のfor文では、取り出した1行をまるごと利用し、フォルダ作成に使っています。

2つ目のfor文では、取り出した1行を、「\」で区切り、先頭から2つトークンを取り出し、2つ目のトークンを「コピー元ファイルの指定」に使い、1つ目と2つ目のトークンを「コピー先フォルダの指定」に使っています。

又、わざわざ「pushd "%~dp0"」や「in (`type "namelist.txt"`)」のように、「"」で囲む書き方にしているのは、ファイル名やパスの記述において、より多くの文字(全角/半角スペース、「&」、「( )」等)に対応する為です。必須ではありません。エラー防止の念の為です。

「in (`type "namelist.txt"`)」は、「in ("namelist.txt")」と記述しても大丈夫なようですが、正式な書式かは分からないです。その場合も「usebackq」は付ける必要があるようです。

又、不具合箇所を探す場合、「do」の後に「echo」入れて、「do echo mkdir "%%i"」のような感じにすると、アルファベットに代入された変数の値が確認出来、分かりやすいかと思います。
    • good
    • 0
この回答へのお礼

できました。。。こんなに詳しく書いてもらって涙が出るほどうれしいです。
1つずつ調べながら理解していきたいと思います。バッジってすごいですね。VBAのコードに比べて
こんなに短い分でこんな事ができるなんて。勉強していきたいと思います。
本当にありがとうございます。

お礼日時:2019/03/13 11:06

最初の


@echo off
を削除かコメントアウトすれば
コマンドがどう展開されてるかわかるし
エラーメッセージなども表示されるので
そうすると大きな手がかりになります
    • good
    • 0
この回答へのお礼

すぐ消えてしまうエラーメッセージを表示させるのにひと苦労するほどの初心者です。。。お返事ありがとうございます。
「ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。」のエラーでした。

お礼日時:2019/03/12 12:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Q当日日付フォルダ内にIDごとにテキストデータを振り分けるバッチファイル

当日日付のフォルダを作成し
base.txtというテキストファイルから
当日日付フォルダの中にID名のテキストファイルを作成。
ID名のテキストファイルには、IDとデータを格納
というbatファイルは作成可能でしょうか?
作成可能でしたら教えて頂ければ助かります。
宜しくお願いします。

base.txt     
 ID  データ      
 AAAA 111111
 AAAA 222222
 BBBB 111111
 BBBB 222222
    ↓
フォルダ:YYYYMMDD
AAAA.txt     
AAAA 111111   
AAAA 222222   

BBBB.txt
BBBB 111111
BBBB 222222

Aベストアンサー

No.1です。

半角記号には対応出来ないという旨を書きましたが、No.1のバッチファイルの例では問題無かったです。失礼しました。訂正させて頂きます。

ただ、やはり処理を変更しますと、半角記号への対応がネックになってくる場合がありますので、半角記号やスペース関係の文字も含めて行をそのまま出力しようと思うと、以下のような感じで出来るかと思います。

―――――――――――――――――――

@echo off

rem ■ カレントディレクトリの変更
pushd "%~dp0"

rem ■ 設定
set "出力フォルダ=%CD%\%date:/=%"
set "入力ファイル=%CD%\base.txt"

rem ■ フォルダ作成
md "%出力フォルダ%"
md "TEMP"

rem ■ カレントディレクトリの変更
pushd "%出力フォルダ%"

rem ■ テキストファイルにIDとデータを格納

rem ◇ 1行をまるごと取り出して、一時ファイルに出力する
for /f "skip=1 usebackq delims=" %%a in ("%入力ファイル%") do (
echo %%a> "..\TEMP\今回の行.txt"

rem ◇ 出力した行の1列目を名前として、その行全体をファイルに保存する
for /f "tokens=1 usebackq delims=  " %%a in ("..\TEMP\今回の行.txt") do (
type "..\TEMP\今回の行.txt" >> "%%a.txt"
del /q "..\TEMP\今回の行.txt"
)

)

rem ■ 一時フォルダの削除
rd /q "..\TEMP"

―――――――――――――――――――

意味は、
「skip=1」=1行目を飛ばす
「usebackq」=「in」のファイル指定にダブルクォーテーションを使う
「delims=」=区切りとなる文字の指定
「tokens=1」=1列目を対象とする
という感じです。

No.1です。

半角記号には対応出来ないという旨を書きましたが、No.1のバッチファイルの例では問題無かったです。失礼しました。訂正させて頂きます。

ただ、やはり処理を変更しますと、半角記号への対応がネックになってくる場合がありますので、半角記号やスペース関係の文字も含めて行をそのまま出力しようと思うと、以下のような感じで出来るかと思います。

―――――――――――――――――――

@echo off

rem ■ カレントディレクトリの変更
pushd "%~dp0"

rem ■ 設定
set "出力フォルダ=%CD%\%date:/=%"
set "入力ファ...続きを読む

Qマイクロソフトのビルゲイツさんは、何を発明したのですか?パソコン?

マイクロソフトのビルゲイツさんは、何を発明したのですか?パソコン?

Aベストアンサー

「開発」はしましたが「発明」はしていません。
まずは以下をご一読ください。

https://ja.wikipedia.org/wiki/%E3%83%93%E3%83%AB%E3%83%BB%E3%82%B2%E3%82%A4%E3%83%84

参考まで。

Q4142から653347と飛んでます。 これを4143からちゃんと並ぶにはどうすればいいでしょうか?

4142から653347と飛んでます。
これを4143からちゃんと並ぶにはどうすればいいでしょうか?

Aベストアンサー

これ、9から70に飛んでるよね。

①シート全体を選択
②どの行でもいいので右クリック
③再表示を選択

開いたかな?

QCSVファイルの結合(重複データは削除。出来ればエクセルのマクロで。)

CSVファイルを結合したいのですが、重複しているデータは削除した結果で結合させたいと
思っています。

CSVファイルはカンマ区切りで30列分、5000行ぐらいのデータ量となっています。
(1行目はタイトル行)
結合したときに、30列分のデータが全て同じ場合はひとつだけ残してかぶっているデータは
削除させたいです。

処理のイメージとしては下記が一番やりやすいのかなと思っていますが、VBA初心者なので
お知恵をお借りしたいです。
・結合したいファイルをCドライブ直下にフォルダ作って置いておく。(多くても10ファイルぐらいです)
・それをエクセルのマクロ(VBA)でマクロ実行したら、上記ファイルを読み込んでワークシートにデータをすべて貼り付けて、重複データを削除。
・残ったデータを新規ファイルで保存(同じディレクトリにCSV形式で保存)
※結合させたときにどれくらいのデータ量になるかは把握出来ていません。

Aベストアンサー

以下のマクロを標準モジュールに登録してください。
使用上の注意
Const folder As String = "D:\goo\excel\goo166"・・・CSVファイルのあるフォルダ
Const outfile As String = "結合.csv"・・・出力するCSVファイル名
上記はあなたの環境に合わせて適切に設定してください。
①拡張子がCSVのファイルのみを処理しています。
②同じ内容か否かは、1行の文字が全く同じなら、同じ内容と判断します。
③入力データ件数、出力データ件数に見出し行は含めません。
④全てのファイルに見出し行があるものとします。
⑤2回目に実行する際は、結合.csvを削除してから行ってください。そうしないと、そのファイルも入力ファイル扱いになってしまいます。
------------------------------------------------------------
Option Explicit
Public Sub CSVファイル結合()
Const folder As String = "D:\goo\excel\goo166"
Const outfile As String = "結合.csv"
Dim dicT As Object
Dim in_data_ctr As Long
Dim out_data_ctr As Long
Dim fname As String
Dim file_ctr As Long
Dim header_line As String
Dim fileNo As Long
Dim out_path As String
Dim key As Variant
in_data_ctr = 0
out_data_ctr = 0
file_ctr = 0
Set dicT = CreateObject("Scripting.Dictionary") ' 連想配列の定義
fname = Dir(folder & "\" & "*.csv", vbNormal)
Do While fname <> ""
file_ctr = file_ctr + 1
Call read_csv(folder & "\" & fname, dicT, in_data_ctr, header_line)
fname = Dir()
Loop
out_path = folder & "\" & outfile
fileNo = FreeFile '空き番号取得
Open out_path For Output As #fileNo
Print #fileNo, header_line
For Each key In dicT
Print #fileNo, key
out_data_ctr = out_data_ctr + 1
Next
Close #fileNo
MsgBox (file_ctr & "件のファイルを処理しました。入力データ件数=" & in_data_ctr & " 出力データ件数=" & out_data_ctr)

End Sub

Private Sub read_csv(ByVal file_path As String, ByVal dicT As Object, ByRef in_ctr As Long, ByRef header As String)
Dim fileNo As Long
Dim text As String
fileNo = FreeFile '空き番号取得
Open file_path For Input As #fileNo
Line Input #fileNo, header '1行目は見出しなのでヘッダー行へ格納
Do Until EOF(fileNo)
Line Input #fileNo, text
in_ctr = in_ctr + 1
If dicT.exists(text) = False Then
dicT(text) = True
End If
Loop
Close #fileNo
End Sub

以下のマクロを標準モジュールに登録してください。
使用上の注意
Const folder As String = "D:\goo\excel\goo166"・・・CSVファイルのあるフォルダ
Const outfile As String = "結合.csv"・・・出力するCSVファイル名
上記はあなたの環境に合わせて適切に設定してください。
①拡張子がCSVのファイルのみを処理しています。
②同じ内容か否かは、1行の文字が全く同じなら、同じ内容と判断します。
③入力データ件数、出力データ件数に見出し行は含めません。
④全てのファイルに見出し行があるものとします。
⑤2回目...続きを読む

Qc++ プログラムについて

txtデータを読み込みデータの行をカウントする
指定した行の前後に違うデータを書き込む

指定する行は複数行であるが書き込むデータは始め以外同じ
書き込む数の初めは1からカウントする

書き込むデータは2進数である
といったプログラムを作成したいのですが
アドバイスなどお願いします

Aベストアンサー

>javaプログラムは組んだことがあるのですがc++は初めてでサイトを見てもよくわからないことが多いので
基本的にあなたが悩んでいる部分は言語の違いは関係ありません
考え方の問題なので

https://gab-km.bitbucket.io/blog/html/2013/11/21/typical_of_cplusplus_file_io.html
http://www.geocities.jp/eneces_jupiter_jp/cpp1/005-004.html
必要な知識はここら辺ですかね?

まぁこの際ある程度書きますが...
頭の中で考えているだけで、実際に動かしているわけではないので
正しく動く保証はできません、そこは調整してください
あといくらか省略していますが、既にご自身で書いてあるソースから想像できると思うので
そこは自分で書き足してくださいね

挿入する行の計算方法は「指定した行」±1ですね

cin >> a; //行指定

std::ofstream ofs("新しいファイル");
std::string line;
int i = 1;
while (std::getline(ifs, line))
{
if( a == i-1 )
{
ofs << 挿入するデータ << std::endl;
}

ofs << line << std::endl;

if( a == i+1 )
{
ofs << 挿入するデータ << std::endl;
}
}

我ながらなかなか雑な処理です
もっとスマートに作れるでしょうけど
まぁ求めている出力は出せるかと

>javaプログラムは組んだことがあるのですがc++は初めてでサイトを見てもよくわからないことが多いので
基本的にあなたが悩んでいる部分は言語の違いは関係ありません
考え方の問題なので

https://gab-km.bitbucket.io/blog/html/2013/11/21/typical_of_cplusplus_file_io.html
http://www.geocities.jp/eneces_jupiter_jp/cpp1/005-004.html
必要な知識はここら辺ですかね?

まぁこの際ある程度書きますが...
頭の中で考えているだけで、実際に動かしているわけではないので
正しく動く保証はできません、そ...続きを読む

Q連想配列を利用して重複語を含む単語表を整理作成に行き詰っています。知恵を授けて下さい。

大きな単語表の重複語削除・整理方法を教えてください。
配列の形(単語位置)・・・単語表なので凹凸のある配列となっています。
  A    B    C    D    E    F
1 単語1-1 単語1-2 単語1-3 単語1-4    
2 単語2-1 単語2-2 単語2-3 単語2-4 単語2-5 単語2-6
3 単語3-1 単語3-2 単語3-3      
4 単語4-1 単語4-2 単語4-3 単語4-4 単語4-5 単語4-6
上記の表は単語表の単語位置を示しています。具体的単語表には下記のように重複単語を含んでいます。
  A    B   C    D    E    F
1 単語1-1 単語1-1 単語1-3 単語1-4    
2 単語2-1 単語2-2 単語2-1 単語2-2 単語2-5 単語2-6
3 単語3-1 単語3-2 単語3-3      
4 単語4-1 単語4-2 単語4-3 単語4-2 単語4-5 単語4-6
重複単語を削除して下表のように整理した表を出力したい。
重複単語を削除した目的の単語表(➀)
  A    B    C    D    E    F
1 単語1-1 単語1-3 単語1-4      
2 単語2-1 単語2-2 単語2-5 単語2-6    
3 単語3-1 単語3-2 単語3-3      
4 単語4-1 単語4-2 単語4-3 単語4-5 単語4-6  
連想配列dicで重複語を削除するのが簡単なので、ワークシートwS1の単語表からワークシートwS2に書き出します。
===☆===
maxRow = wS1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To maxRow
maxCol = wS1.Cells(i, Columns.Count).End(xlToLeft).Column
For j = 1 To maxCol
strMat = wS1.Cells(i, j).Value
If dic.Exists(strMat) = False Then
dic.Add strMat, ""
End If
Next j
For k = 0 To dic.Count - 1
wS2.Cells(i, k + 1).Value = dic.Keys(k)
Next k
    Next i
===☆===
のように、
行数を求め、各行の重複を連想配列で削除して出力すると次のように全行の重複単語を削除した結果をつなげて出力します。(列方向に広がっているので一部のみを表示します。)
A    B    C    D    E    F    G    H      I    J    K    L    M    N    O
1 単語1-1 単語1-3 単語1-4
2 単語1-1 単語1-3 単語1-4 単語2-1 単語2-2 単語2-5 単語2-6
3 単語1-1 単語1-3 単語1-4 単語2-1 単語2-2 単語2-5 単語2-6 単語3-1 単語3-2 単語3-3
4 単語1-1 単語1-3 単語1-4 単語2-1 単語2-2 単語2-5 単語2-6 単語3-1 単語3-2 単語3-3 単語4-1 単語4-2 単語4-3 単語4-5 単語4-6
連想配列での出力は、全部の加算結果を出力するのを上記の目標単語表(➀)にしたい。一つ前の領域相当分を削除して左詰めに出力すする事を試行しましたが、加算結果は列数の限界(”XFD"=16384)で処理できなくなる。このため、処理は中断となります。
他に、一行分をwS2に書き出し、その都度初期化する方法も見つかりません。
実際の単語表は、行あたり列方向に平均30単語、5000行のサイズです。この種の単語表を数件処理しようと頑張っています。
解決方法をご教示いただけると助かります。
作業環境:
Win10,Excel2016を使用。VBAプログラミング歴2年の初級者です。
ノウハウがなく突破口が見つかりません。
よろしくお願いしましす。

大きな単語表の重複語削除・整理方法を教えてください。
配列の形(単語位置)・・・単語表なので凹凸のある配列となっています。
  A    B    C    D    E    F
1 単語1-1 単語1-2 単語1-3 単語1-4    
2 単語2-1 単語2-2 単語2-3 単語2-4 単語2-5 単語2-6
3 単語3-1 単語3-2 単語3-3      
4 単語4-1 単語4-2 単語4-3 単語4-4 単語4-5 単語4-6
上記の表は単語表の単語位置を示しています。具体的単語表には下記のように重複単語を含んでいます。
  A    B   C    D ...続きを読む

Aベストアンサー

No2です。補足を読むと1行単位での単語の重複を削除したいようなので、以下のようにしました。
1行単位で連想配列を初期化します。
-----------------------------------------
Public Sub 単語表重複削除()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim maxRow As Long
Dim maxCol As Long
Dim i As Long
Dim j As Long
Dim k As Long
Dim strMat As String
Dim dic As Object
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set dic = CreateObject("Scripting.Dictionary")
ws2.Cells.ClearContents
maxRow = ws1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To maxRow
maxCol = ws1.Cells(i, Columns.Count).End(xlToLeft).Column
k = 0
dic.RemoveAll
For j = 1 To maxCol
strMat = ws1.Cells(i, j).Value
If dic.Exists(strMat) = False Then
dic.Add strMat, ""
k = k + 1
ws2.Cells(i, k).Value = strMat
End If
Next j
Next i
End Sub

No2です。補足を読むと1行単位での単語の重複を削除したいようなので、以下のようにしました。
1行単位で連想配列を初期化します。
-----------------------------------------
Public Sub 単語表重複削除()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim maxRow As Long
Dim maxCol As Long
Dim i As Long
Dim j As Long
Dim k As Long
Dim strMat As String
Dim dic As Object
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set dic = Cre...続きを読む

Qjavaが文字コードの影響でコンパイルが通りません。

java jdk-12 , windows10 , Tera Pad でコンパイルしようとしていますが、

 1つ目、

  エラー: この文字(0xEF)は、エンコーディングwindows-31jにマップできません

のエラーが出てコンパイルが通りません。 

ネットで調べて -encoding UTF-8 を追加してコンパイルしたら通ったのですが、次に

 2つ目、

  エラー: '\ufeff'は不正な文字です

というエラーが出ます。

UTF-8のBOMが原因のようですが、ネットで調べた方法をいくつか試してみても

コンパイルが通りません。

どのようにしたらよいでしょうか?


試した方法: UTF-8N にする , 一度Shift-Jisに変換してみる
$ nkf --overwrite --oc=UTF-8 ($は内部コマンドまたは...認識されませんと出ます)
ネット上のBOMをスキップする方法というソース

java jdk-12 , windows10 , Tera Pad でコンパイルしようとしていますが、

 1つ目、

  エラー: この文字(0xEF)は、エンコーディングwindows-31jにマップできません

のエラーが出てコンパイルが通りません。 

ネットで調べて -encoding UTF-8 を追加してコンパイルしたら通ったのですが、次に

 2つ目、

  エラー: '\ufeff'は不正な文字です

というエラーが出ます。

UTF-8のBOMが原因のようですが、ネットで調べた方法をいくつか試してみても

コンパイルが通りません。

ど...続きを読む

Aベストアンサー

>エラー: この文字(0xEF)は、エンコーディングwindows-31jにマップできません

日本語環境のWindowsで、普通に起動したコマンドプロンプトはShiftJISなんじゃないですかね?
https://qiita.com/user0/items/a9116acc7bd7b70ecfb0

TeraPadで保存時の文字コードをShiftJISにしたらどうなるでしょう?

とは言え…JavaならUTF-8とかでしょうかねぇ。
先程掲示したURLの方法でコードページをUTF-8にしてみてはどうでしょうか。

>$ nkf --overwrite --oc=UTF-8 ($は内部コマンドまたは...認識されませんと出ます)

Windowsには標準でnkfは入っていないと思いますけど、そこのところどうなんです?
vectorとかからDLして入れたんですか?
そして…コマンド入力時にプロンプトは入力しませんよ?
# Linuxとかのシェルのプロンプトだと思いますが…。

Qライントレース:C言語 物理センサーを使って障害物のあるコースを走らせます。プログラムとしては、ぶつ

ライントレース:C言語
物理センサーを使って障害物のあるコースを走らせます。プログラムとしては、ぶつかったら一定時間バックして右に曲がるようにしたいです。どうすれば1つのif文の中で2つの動きが出来るのか教えて下さい。
現在のプログラム⬇(インデントおかしくてすみません)
if(p1_6 = 0){
int i ;
for(i=0; i<10; i++){
back();


⬆turnrightもいれたい

Aベストアンサー

if文は{}内に複数の文が書けますよ。
{}を省略すると直後の一文が『真』である場合に実行されます。

つまり

if(p1_6 = 0){
  int i ;
  for(i=0; i<10; i++){
    back();
  }
  turnright();

QNullPointerException

以下のソースで、
NullPointerExceptionが出ます。
(202行目)
解決策がわかりません涙

どなたかわかる方いらっしゃいませんか?
https://pastebin.com/UV9TN4Sh

Aベストアンサー

> 710行目(https://pastebin.com/UV9TN4Sh
> )の
> wrkPassDto.setCheckResult(checkResult);
>
> ここに着目してみろと言われたのですが、ここからなにがわかりますか?

教えてくれる人がいるなら直接聞いたらいかがですか?
ここからなにがわかるかって、それをちゃんと自分で考えるように促されたのではないのですか?

特定の1クラスだけ見せられて、業務の仕組みも何がしたいかも分からない赤の他人に聞くことじゃありませんね。

710行目はInsertWorkData()内で、データ登録用のメソッドですよね。
私が見せられたロジックだけ見たら、今回発生している箇所との関係性はありません。

教えてくれてる人が言っているのは、こういうこと言ってるんじゃないんですか?
 ・登録(InsertWorkData())でcheckResultには必ず数字が入ってDB登録されなければならない仕様。
 ・よって、検索(handleSearch())でcheckResultを得た時、nullになりえない。
 ・としたら、登録(InsertWorkData())でcheckResultがnullで登録されていることがおかしい。
  登録(InsertWorkData())の呼出元に問題があるのではないか。

まあ仮にそうだとしたら、DB設計上、Not NULL制約がないのもどうかと思いますし、その時に問題視していたのは、202行目で例外になることではなく、登録処理の単体テスト的に、checkResult項目の結果がNG出してる、ということ。

仕事でやってて、教えてくれる人がいるのならば、こんなとこで質問してないで、ちゃんと自分で考えて、考えた結果をその方に質問してを繰り返して、社内で消化しましょうね。

> 710行目(https://pastebin.com/UV9TN4Sh
> )の
> wrkPassDto.setCheckResult(checkResult);
>
> ここに着目してみろと言われたのですが、ここからなにがわかりますか?

教えてくれる人がいるなら直接聞いたらいかがですか?
ここからなにがわかるかって、それをちゃんと自分で考えるように促されたのではないのですか?

特定の1クラスだけ見せられて、業務の仕組みも何がしたいかも分からない赤の他人に聞くことじゃありませんね。

710行目はInsertWorkData()内で、データ登録用のメソッドですよね。
私が...続きを読む

Q簡単にEXEファイルを作れるプログラミング言語/開発環境

「C:\xxx.exe C:\xxx.txt」のような単純な処理を実行するだけのEXEファイルを、なるべく簡単に作りたいのですが、お勧めの言語や開発環境はありますでしょうか。

高度な事は求めていないので、Visual Studioのように大掛かりでなく、容量が小さく、出力されるEXEファイルの容量も小さいものが望ましいです。

ご存知の方がおられましたら、お教え頂けると有難いです。

Aベストアンサー

windows 7以降(VISTAも?)ならC#が最初から入っているので、それを使用してみては如何でしょう?

>1. ウィンドウ無しで起動出来る事
>2. アイコンが設定出来る事

メモ帳等テキストエディタでソースを書いて、csc.exeにパスを通した環境でコマンドプロンプトから以下のとおりオプション付きで実行します。
C:\>csc.exe /target:winexe /win32icon:foo.ico source.cs

Windows10ならcsc.exeは以下の場所にあります。ほかのWindowsでも似た場所にあるはずです。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319




あとは比較的マイナー言語ですがGolangとか(https://golang.org/)

> 容量が小さく、出力されるEXEファイルの容量も小さいものが望ましいです。

は満たすと思います。
C言語ほどメモリ管理に気を使わなくてよいですし、他の要件も満たすと思います。
学習コストはかかりますが……

ご参考まで。

windows 7以降(VISTAも?)ならC#が最初から入っているので、それを使用してみては如何でしょう?

>1. ウィンドウ無しで起動出来る事
>2. アイコンが設定出来る事

メモ帳等テキストエディタでソースを書いて、csc.exeにパスを通した環境でコマンドプロンプトから以下のとおりオプション付きで実行します。
C:\>csc.exe /target:winexe /win32icon:foo.ico source.cs

Windows10ならcsc.exeは以下の場所にあります。ほかのWindowsでも似た場所にあるはずです。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング