teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2018/08/23 13:00

投稿

papinianus
papinianus

スコア12705

answer CHANGED
@@ -3,4 +3,137 @@
3
3
  このように「cmd.exe」と書いておられるということは、その表記は、タイトルバーですよね(×とか最小化ボタンがある箇所)?
4
4
  それって、コマンドプロンプトプログラムの本体のある場所なので、そこにそのように表示されていたとしても「上記ディレクトリにcdしてバッチを実行していない」とは言えないと思います(ちゃんとcdしていてもそう表示されるので)。
5
5
 
6
- `@ECHO ON`とかして、`>`の前に何と書いてあるかとか、テスト的にファイル出力などをして、本当に"C:\temp\"で実行されて**いない**かご確認いただく必要があると思います。
6
+ `@ECHO ON`とかして、`>`の前に何と書いてあるかとか、テスト的にファイル出力などをして、本当に"C:\temp\"で実行されて**いない**かご確認いただく必要があると思います。
7
+
8
+ --追記
9
+ ご理解いただけないようなので改めて申し上げますが、そこにそういう表記が出ていても、作業フォルダの設定は動いています。
10
+
11
+ ```bat
12
+ REM one.cmd
13
+ @ECHO ON
14
+ echo "this is 1!" >> 1.txt
15
+ PAUSE
16
+ ```
17
+ ```bat
18
+ REM two.cmd
19
+ @ECHO ON
20
+ echo "this is 2!" >> 1.txt
21
+ PAUSE
22
+ ```
23
+ これらを
24
+ C:\bin
25
+ -one.cmd
26
+ -two.cmd
27
+ C:\temp1
28
+ -empty
29
+ C:\temp2
30
+ -empty
31
+
32
+ こういう構成において、タスクスケジューラに
33
+ ```XML
34
+ <?xml version="1.0" encoding="UTF-16"?>
35
+ <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
36
+ <RegistrationInfo>
37
+ <Date>2018-08-23T21:36:01.7920025</Date>
38
+ <Author>me</Author>
39
+ <URI>\one</URI>
40
+ </RegistrationInfo>
41
+ <Triggers>
42
+ <LogonTrigger>
43
+ <Enabled>true</Enabled>
44
+ <UserId>papinianus</UserId>
45
+ </LogonTrigger>
46
+ </Triggers>
47
+ <Principals>
48
+ <Principal id="Author">
49
+ <UserId></UserId>
50
+ <LogonType>InteractiveToken</LogonType>
51
+ <RunLevel>HighestAvailable</RunLevel>
52
+ </Principal>
53
+ </Principals>
54
+ <Settings>
55
+ <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
56
+ <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
57
+ <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
58
+ <AllowHardTerminate>true</AllowHardTerminate>
59
+ <StartWhenAvailable>false</StartWhenAvailable>
60
+ <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
61
+ <IdleSettings>
62
+ <StopOnIdleEnd>true</StopOnIdleEnd>
63
+ <RestartOnIdle>false</RestartOnIdle>
64
+ </IdleSettings>
65
+ <AllowStartOnDemand>true</AllowStartOnDemand>
66
+ <Enabled>true</Enabled>
67
+ <Hidden>false</Hidden>
68
+ <RunOnlyIfIdle>false</RunOnlyIfIdle>
69
+ <WakeToRun>false</WakeToRun>
70
+ <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
71
+ <Priority>7</Priority>
72
+ </Settings>
73
+ <Actions Context="Author">
74
+ <Exec>
75
+ <Command>c:\bin\one.cmd</Command>
76
+ <WorkingDirectory>c:\temp1</WorkingDirectory>
77
+ </Exec>
78
+ </Actions>
79
+ </Task>
80
+ ```
81
+ ```XML
82
+ <?xml version="1.0" encoding="UTF-16"?>
83
+ <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
84
+ <RegistrationInfo>
85
+ <Date>2018-08-23T21:36:36.9287388</Date>
86
+ <Author>me</Author>
87
+ <URI>\two</URI>
88
+ </RegistrationInfo>
89
+ <Triggers>
90
+ <LogonTrigger>
91
+ <Enabled>true</Enabled>
92
+ <UserId>papinianus</UserId>
93
+ </LogonTrigger>
94
+ </Triggers>
95
+ <Principals>
96
+ <Principal id="Author">
97
+ <UserId></UserId>
98
+ <LogonType>InteractiveToken</LogonType>
99
+ <RunLevel>HighestAvailable</RunLevel>
100
+ </Principal>
101
+ </Principals>
102
+ <Settings>
103
+ <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
104
+ <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
105
+ <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
106
+ <AllowHardTerminate>true</AllowHardTerminate>
107
+ <StartWhenAvailable>false</StartWhenAvailable>
108
+ <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
109
+ <IdleSettings>
110
+ <StopOnIdleEnd>true</StopOnIdleEnd>
111
+ <RestartOnIdle>false</RestartOnIdle>
112
+ </IdleSettings>
113
+ <AllowStartOnDemand>true</AllowStartOnDemand>
114
+ <Enabled>true</Enabled>
115
+ <Hidden>false</Hidden>
116
+ <RunOnlyIfIdle>false</RunOnlyIfIdle>
117
+ <WakeToRun>false</WakeToRun>
118
+ <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
119
+ <Priority>7</Priority>
120
+ </Settings>
121
+ <Actions Context="Author">
122
+ <Exec>
123
+ <Command>C:\bin\two.cmd</Command>
124
+ <WorkingDirectory>c:\temp2</WorkingDirectory>
125
+ </Exec>
126
+ </Actions>
127
+ </Task>
128
+ ```
129
+ こういう設定で実行したところ
130
+ ![実行画面](95086eed9341c9c50f8e60c7fad73faf.png)
131
+ のように、タイトルバーにかかわらず、作業フォルダが効いた状態で実行され、かつc:\temp1\1.txtgとc:\temp2\1.txtがそれぞれ作成されました(system32に2行書かれた1.txtができたのではない)。
132
+
133
+ もし、これが納得できず、感触に合わないので、cdしたようにしたいのだったら、launcherのcmdを作り、
134
+ ```bat
135
+ REM launch.abc.cmd
136
+ cd /d C:\temp
137
+ abc.cmd
138
+ ```
139
+ とすればいいだけです。