EXCELのVBAで、「C:\My Documents」のようなロングファイル名を
「C:\Mydocu~1」のような昔のファイル形式にする方法を教えてください。

例えば
ThisWorkbook.Pathで得たパス名がロングファイルだった場合です。


目的は、ある古い別アプリをShellで起動させたいのですが、それの
引数に昔のファイル形式で色々なパスを渡さないといけないのです。
(そのアプリがロングファイル名に対応していない)

ヘルプとか見たんですけど分からないので教えてください。
お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

GetShortPathNameというAPIを使用します。

VBAではAPIを使用する前に定義を
書く必要があります。定義は次の通りです。

Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" ( _
ByVal LongPath As String, _
ByVal ShortPath As String, _
ByVal ShortPathSize As Long) As Long

以下はサンプルです。

Dim FileName As String * 512
GetShortPathName "Z:\My Document\audio.wav", ShortName, 512
MsgBox Left(FileName, InStr(FileName, vbNullChar) - 1)

この回答への補足

宣言からしますと、

Dim FileName As String * 512
Dim ShortName As String
Dim lRet As Long
lRet = GetShortPathName "Z:\My Document\audio.wav", ShortName, 512

で使い方合ってますか?
lRet = 0
ShortName ="" で戻ってきちゃうんですよ。
MSのHPで検索してもC言語の「GetShortPathName」しかでないし
困ってしまってます。

補足日時:2001/12/20 00:37
    • good
    • 0
この回答へのお礼

回答有難うございます。

残念ながら、まだ解決はしてませんのでお手すきの時に
補足を見ていただければ幸いです。

お礼日時:2001/12/20 00:37

こんにちは。

maruru01です。
tnakさんの回答の間違いを。
多分単なるタイプミスだと思いますが、

GetShortPathName "Z:\My Document\audio.wav", ShortName, 512
を、以下のようにします。

GetShortPathName "Z:\My Document\audio.wav", FileName, 512

あと、第3引数の文字列長は、
Len(FileName)
とした方がいいかも知れません。(変数宣言での文字列長の指定値を変えた時にいちいち変えなくても済みますから。)
ちなみに、戻り値をつけるなら()がいると思います。
lRet = GetShortPathName ("Z:\My Document\audio.wav", ShortName, 512)

横から口を出してすみません。
では。
    • good
    • 0
この回答へのお礼

お礼が遅れてすみません。

頂いた回答を元にコードをブラッシュアップさせていただきます。
ありがとうございました。

お礼日時:2001/12/27 14:26

 えーと、このまま使っても実在するファイル名がなければ正しい答えを返し


てくれません。GetShortPathNameでは結果的にディスクに記録された8+3
形式のファイル名を吐き出してくれるだけですから実在しないと何も返しませ
ん。

"Z:\My Document\audio.wav"

を実在するファイル名に変えてください。
    • good
    • 0
この回答へのお礼

お礼が遅れてすみません。

最初の回答をヒントに、なんとか解決できました。
有難うございました。

お礼日時:2001/12/27 14:24

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

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

Qexcelのマクロでrangeの選択がうまくいきません。

excelのマクロでrangeの選択がうまくいきません。
以下のマクロをsheet2に書きました。testcopyは動きますが、testcopy2は動きません。なぜなのでしょうか。どうすればいいのでしょうか。それ以外のマクロの部分との関係から、cellsを使い、数字を使ってrangeの処理をしたいのです。よろしくお願いします。

Sub testcopy()
Worksheets("sheet1").Range("B3:C10").Copy
Worksheets("sheet2").Range("e5").Select
ActiveSheet.Paste
End Sub

Sub testcopy2()
Worksheets("sheet1").Range(Cells(3, 2), Cells(10, 3)).Copy
Worksheets("sheet2").Range("e5").Select
ActiveSheet.Paste
End Sub

Aベストアンサー

>testcopyは動きますが、testcopy2は動きません

testcopyは「動作したり、しなかったりする」が正しい表現です。
  要するに今回testcopyが動いたのは▼たまたま▼ということです。

testcopy2 は当然ながらエラーになります。
何れにしろ、両方ともに問題があるということです。
その問題点は2つあります。

(1)アクティブでないシートのセルはSelect(Activate)できない
(2)複数のシートを扱うときのセルの参照は
   そのセルがどのシートのセルなのか明示する必要がある


これを踏まえて、、、、
---------------
●testcopy●

これが動作するのは
Sheet【2】がアクティブな状態で実行する場合です

Sheet【1】がアクティブな状態で実行すると
  Worksheets("sheet2").Range("e5").Select
ここで、問題点(1)の理由によりエラー。
で、先ずシートを選択、次にセルを選択と2段階にしないといけません。

  Worksheets("sheet2").Select
  ActiveSheet.Range("E5").Select

----------------
●testcopy2●

▼Sheet【1】がアクティブな状態で実行
  testcopyと同じ場所、同じ理由でエラー

▼Sheet【2】がアクティブな状態で実行
  Worksheets("sheet1").Range(Cells(3, 2), Cells(10, 3)).Copy
  ここで、問題点(2)により、エラー。
 
 Cellsの前にシートオブジェクトがないので
 Cells(3, 2), Cells(10, 3)はアクティブなSheet【2】のセルとみなされ
 (★実際はちょと違う場合もありますが今回はそう★)

 Worksheets("sheet1").Range(  ← Sheet【1】
 Cells(3, 2), Cells(10, 3))   ← Sheet【2】

このようにSheet【1】【2】が混在していることになり、エラー
で、Cellsの前にシートを付加してセルがどのシートのセルか明示してやる

Worksheets("sheet1").Range(Worksheets("sheet1").Cells(3, 2), Worksheets("sheet1").Cells(10, 3)).Copy
  
---------------------------------
で、質問者のコードを修正すると
'-------------
Sub testcopy()
 Worksheets("sheet1").Range("B3:C10").Copy
 With Worksheets("sheet2")
   .Select
   .Range("E5").Select
   .Paste
 End With
End Sub
'-------------

Sub testcopy2()
 With Worksheets("sheet1")
   .Range(.Cells(3, 2), .Cells(10, 3)).Copy
 End With
 With Worksheets("sheet2")
   .Select
   .Range("E5").Select
   .Paste
 End With
End Sub
'--------------

●ただ今回のような単純なコピーの場合は
 既出の回答にあるようにSelectなしで書くのがふうつです。
'-----------
Sub testcopy111()
 Worksheets("sheet1")
   .Range("B3:C10").Copy Worksheets("sheet2").Range("E5")
 End With
End Sub
'-----------
Sub testcopy222()
 Worksheets("sheet1")
  .Range(.Cells(3, 2), .Cells(10, 3)).Copy Worksheets("sheet2").Range("E5")
 End With
End Sub
'-----------

今回の件は重要事柄ですので覚えておきましょう。
以上です。
 

>testcopyは動きますが、testcopy2は動きません

testcopyは「動作したり、しなかったりする」が正しい表現です。
  要するに今回testcopyが動いたのは▼たまたま▼ということです。

testcopy2 は当然ながらエラーになります。
何れにしろ、両方ともに問題があるということです。
その問題点は2つあります。

(1)アクティブでないシートのセルはSelect(Activate)できない
(2)複数のシートを扱うときのセルの参照は
   そのセルがどのシートのセルなのか明示する必要がある


これを踏まえて、、、、
-...続きを読む

Qpathの設定の時。SET PATH とPATHのどっちを使えばいいか?

いろいろな言語で最初にPATHを設定しますよね。
Win98などで設定する時、AutoExecに記述します。
その時、本によって
「SET PATH=~」
「PATH=~」
の2種類が書いてあります。これは、どう違うんですか?

また、僕のパソコンでは、PATH=~ で、最初から他のパスが通されているんですが、
SET PATH=~を使っても、正常にPATHは機能しますか?

だれか、わかる人がいたら、教えてください。よろしくお願いします。

Aベストアンサー

http://www.longtail.co.jp/kit/c01.htmlには
環境変数は、MS-DOSなら、コマンド行で次のように入力すれば設定できます。
C:>SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;D:\WINDOWS\SYSTEM;C:\BIN
PATH変数については、次のような設定方法もあります。
C:>PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;D:\WINDOWS\SYSTEM;C:\BIN
と書いている方がいます。
とどちらでもOK、SET PATH=が標準のようです。

QRange("K" & TR).Formula = で、セルにマクロで式を書きたいのですが

よろしくお願いします。いつもgooの皆さんには大変お世話になっています
エクセルは2013です

わけあって、セルにマクロで式を書いています
例えば TRは行を表す変数ですが
Range("K" & TR).Formula = "=IFERROR(AY" & TR & ","""")" と書いたマクロの結果は
=IFERROR(AY43,"") という式がRange("K" & TR) に書かれます

それでは、いま、マクロで下記のように書いているコード(TRは行を表す変数です)
Range("Z" & i) = Range("Z" & i - 1) - Range("AG" & TR) * 10000 は
Range("Z" & i).Formula = 
で書く場合、=の右側をどう書いたら良いでしょうか

色々とやってみたのですが狙った式になりません

この場合 変数 i を使っているので、もしかしたら、そもそも無理なことでしょうか

うまく説明できていませんがよろしくお願いします

Aベストアンサー

No.1です。申し訳ありません大ボケな回答をしていましました。

要するに↓ってことですよね? また勘違いしていたらスミマセン。

Range("Z" & i).Formula = "=Z" & i - 1 & "-AG" & TR & " * 10000"

Q絶対パス名からファイル名を取り出して、変数に格納するバッチ

DOSコマンドバッチで定義した変数"fullpath"に絶対フルパス名が格納されているとします。
この変数からファイル名だけを抽出して別の変数"filenae"に格納したいのですが方法がわかりません。

1. set fullpath = "C:\test\test.c"
2. ----ここの部分をどのように処理すれば?------
3. set filename = fullpathから抽出したファイル名

私がやってみた方法として、for文とdir /bを組み合わせてみたのですが
for %a in ( dir /b c:\test\test.c ) do set filename =%a

本来dir /bを実行するとファイル名のみが表示されるのに、For文をかますと絶対フルパスでfilenameに値が格納されてしまいます。

dir /b c:\test\test.cの結果を直接filename変数に格納できれば解決するのですが、コマンド結果を変数に格納するにはFor文を使わないとだめなんですよね?
なにかよい方法はないでしょうか?

DOSコマンドバッチで定義した変数"fullpath"に絶対フルパス名が格納されているとします。
この変数からファイル名だけを抽出して別の変数"filenae"に格納したいのですが方法がわかりません。

1. set fullpath = "C:\test\test.c"
2. ----ここの部分をどのように処理すれば?------
3. set filename = fullpathから抽出したファイル名

私がやってみた方法として、for文とdir /bを組み合わせてみたのですが
for %a in ( dir /b c:\test\test.c ) do set filename =%a

本来dir /bを実行するとファイル名...続きを読む

Aベストアンサー

@echo OFF
setlocal
set fullpath="C:\test\test2.c"
Call :BASENAME %fullpath%
echo %fname%
Goto :EOF
:BASENAME
set fname=%~nx1

詳しくは、call /? または for /?

QVBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗

マクロ実行時に、エラー’1004RangeクラスのPasteSpecialメソッドが失敗と表記され、マクロが実行されません。

マクロの内容は、任意の範囲をコピー、新規book追加し、
新規bookに(1)Paste:=xlPasteValues (2)Paste:=xlPasteColumnWidths (3)Paste:=xlPasteFormats の順に貼り付けし保存するものです。

いろいろ調べては見たのですが、当方初心者の為、わからずじまいです。お手数ではございますが、どなたかご教授願います。
下記にマクロ内容全部記載します。
よろしくお願いします。

*********************************************************
*********************************************************
Sub 日報別ファイルに保存したい1()
Worksheets("日報").Range("A3:AF36").Copy
With Workbooks.Add
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Cells.Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

ApplicationDisplayAlerts = True '同名FILEが存在する場合'
ActiveWorkbook.SaveAs Filename:= _
"c:\日報\" & ActiveSheet.Range("J2") & "年" & ActiveSheet.Range("l2") & "月" & ActiveSheet.Range("n2") & "日_日報.xls" _
, FileFormat:=xlNormal
.Close file


End With

End Sub

マクロ実行時に、エラー’1004RangeクラスのPasteSpecialメソッドが失敗と表記され、マクロが実行されません。

マクロの内容は、任意の範囲をコピー、新規book追加し、
新規bookに(1)Paste:=xlPasteValues (2)Paste:=xlPasteColumnWidths (3)Paste:=xlPasteFormats の順に貼り付けし保存するものです。

いろいろ調べては見たのですが、当方初心者の為、わからずじまいです。お手数ではございますが、どなたかご教授願います。
下記にマクロ内容全部記載します。
よろしくお願いします。

***********...続きを読む

Aベストアンサー

こんにちは。

>結果、「ThisWorkbook」上の下記のマクロを削除すると、正常に動きだしました。
それは、Copy 範囲が、消えてしまうことで、PasteSpecial が利かなくなってしまうからです。

まず、シート名の長いコードは、これだけでよいはずです。

Private Sub Workbook_Activate()
 Select Case StrConv(Trim(ActiveSheet.Name), vbNarrow)
 Case "1" To "30", "日報"
  Application.Calculation = xlCalculationManual
 End Select
End Sub


-------------------------------------------
''もし、そのままでダメでしたら、 ' Application.EnableEvents = False 'イベントの介入を阻止する のところのコメント・ブロック('コードの手前のアポストロフィ)を外して、再度試してみてください。

Sub 日報別ファイルに保存したい2()
Dim myRng As Range
Set myRng = Worksheets("日報").Range("A3:AF36")
 ' Application.EnableEvents = False 'イベントの介入を阻止する

With Workbooks.Add
  myRng.Copy
 .ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues, _
             Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  myRng.Copy
 .ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths, _
             Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  myRng.Copy
 .ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteFormats, _
             Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 
  Application.CutCopyMode = False
 
 ApplicationDisplayAlerts = True '**これは、そのままでは必要ないはずです。'
 
 ActiveWorkbook.SaveAs Filename:="c:\日報\" & ActiveSheet.Range("J2") & "年" & _
                 ActiveSheet.Range("l2") & "月" & _
                 ActiveSheet.Range("n2") & "日_日報.xls", _
                 FileFormat:=xlNormal
 .Close file
End With
Set myRng = Nothing
'Application.EnableEvents = True 'イベントマクロの活動を戻す

End Sub

こんにちは。

>結果、「ThisWorkbook」上の下記のマクロを削除すると、正常に動きだしました。
それは、Copy 範囲が、消えてしまうことで、PasteSpecial が利かなくなってしまうからです。

まず、シート名の長いコードは、これだけでよいはずです。

Private Sub Workbook_Activate()
 Select Case StrConv(Trim(ActiveSheet.Name), vbNarrow)
 Case "1" To "30", "日報"
  Application.Calculation = xlCalculationManual
 End Select
End Sub


-----------------------------------------...続きを読む

Qbatでファイル名を変更したい(元ファイル名の一部を削除したファイル名に)

batファイルを使ってファイル名を変更する方法を教えてください。
例えば、
変更元ファイル:tata1234.exe
変更先ファイル:tata.exe(元ファイル名の一部を削除した名前)

流れでは、あるファイルをbatにドラッグ&ドロップして
COPY %1 %TMP%\%~nx1
REN %TMP%\%~nx1 ???????
変更したファイルを元ファイルのあったフォルダに移動(orコピー)

別ファイルに出力したりしないと無理でしょうか?宜しくお願いいたします。

Aベストアンサー

元ファイル名の先頭4文字まで残して5文字目以降を消すということでいいでしょうか。

set NAME=%~n1
REN %TEMP%\~nx1 %NAME:~0,4%.%~x1

>変更したファイルを元ファイルのあったフォルダに移動(orコピー)
これはどういう意味?変更とは?

QExcelマクロでRange("A1:A5,C1:C5")をCellsで書きたいのですが

マクロ初心者です。
Excelマクロでグラフを作成するときに、元データを指定する所で、
Source:=Range("A1:A5,C1:C5")とするような場合、
「A1」とかアルファベットでの番地指定ではなく、
Cellsを用いて書きたいのです。

Source:=Range("A1:A5")であれば、
Source:=Range(Cells(1, 1), Cells(5, 1))と書けばいいことは分かるのですが、範囲指定を複数にする場合が分からないのです。

よろしくお願いします。

Aベストアンサー

Unionを使用したらできると思います。

Source:=Union(Range(Cells(1, 1), Cells(5, 1)), Range(Cells(1, 3), Cells(5, 3)))

今Excelがインストールされてないパソコンで作業していないので確認はしていないのですが・・・。

よかったら参考にして下さい

QUNIXの<ファイル名>\rの意味

grep '検索文字' ファイル名1.dat>>ファイル名_k.dat
grep '検索文字' ファイル名2.dat>>ファイル名_k.dat
.
.
.
と、書いてあるファイルをchmodで実行ファイルにして実行したら、
"ファイル名_k.dat\r"というのが出きていて、このファイルを見る
こともできないし、消すこともできません。
この\rは何を意味しているものなのでしょうか?
知っているひとがいたらよろしくお願いします。

また、文字検索を行って一つのファイルにまとめる他の方法も、
教えてください。
お願いします。

Aベストアンサー

シェルスクリプト(あるいはバッチファイル?)を書いたエディタの
改行コードが合ってなかったのでしょう。

改行コードはOSによって以下のように違います。
Unix---:LF (\n)
Windows:CR+LF (\r\n)
Mac----:CR (\r)
(CRは復帰、LFは改行という1文字をあらわしています)

Windowsのエディタでそのまま
>grep '検索文字' ファイル名1.dat>>ファイル名_k.dat
と書くと、実際のファイルには、
>grep '検索文字' ファイル名1.dat>>ファイル名_k.dat+CR+LF
と書きこまれます。
これをUnixで評価すると、LFのみが改行なので、
>grep '検索文字' ファイル名1.dat>>ファイル名_k.dat+CR
という行が書かれていることになります。
「ファイル名_k.dat\r」というファイル名です。

多分、見ることや消すこともできますよ。
ワイルドカード1文字分使って、
「ファイル名_k.dat?」と指定してやれば。
catで閲覧することも、rmで消すこともできるはずです。

でもその前にエディタの改行コードをUnix用に変更してくださいね。
まともなエディタなら変更できるはずです。

あと別の方法って、
grep '検索文字' file1 file2 file3... > report.txt
と、ファイルをたくさん書いておけばいいのでは?
質問の例だと、
grep '検索文字' ファイル名?.dat > report.txt
の1行で十分だと思いますよ。

シェルスクリプト(あるいはバッチファイル?)を書いたエディタの
改行コードが合ってなかったのでしょう。

改行コードはOSによって以下のように違います。
Unix---:LF (\n)
Windows:CR+LF (\r\n)
Mac----:CR (\r)
(CRは復帰、LFは改行という1文字をあらわしています)

Windowsのエディタでそのまま
>grep '検索文字' ファイル名1.dat>>ファイル名_k.dat
と書くと、実際のファイルには、
>grep '検索文字' ファイル名1.dat>>ファイル名_k.dat+CR+LF
と書きこまれます。
これをUnixで評価...続きを読む

Qエクセルのマクロ(range)について

マクロの作りと理解の方法について教えてください。

今、日報を作り直しています。
以前作成した方は、このように作っていました。


Worksheets("日報").Select
Range("Q7:Q23").Value = Range("U7:U23").Value
Range("S7:S59").Value = Range("V7:V59").Value
Range("A1").Select
MsgBox " 転写を終了しました。"
End Sub


マクロでは複数の行列を指定していますが、1行だけ表すと、
具体的な表とデータの変化の仕方とするとこのようになっています。

M    O    Q     S       U     V
個数 金額  累計個数 金額金額 (=M+Q) (=O+S)
0、   0、   100、   1000、    100、   1000 
1,初期状態

10、  100、  100、   1000、    110、   1100
2,個数を入力すると、計算式を入力してあるUとVの数が変わる

10、  100、   110、   1100、    120、   1200
3,マクロを実行すると、UとVの数がQとSに入力され、計算式を入力してあるUとVの数がさらに変わる。

0、   0、    110、   1100、   110、    1100
4,MとOの数をゼロ(クリア)にすると、計算式を入力してあるUとVの数が変わる。     


なかなか理解できないのは、Range("Q7:Q23").Value = Range("U7:U23").Valueの部分で、
2,の後にマクロを実行すると、U 110、V 1100がQ 100とS 1000に書き込まれることです。
通常の計算式だと=は対象となったセルをそのまま表示していると思うのですがのですが、
マクロに書いてある式だと3,のところでUとVの数をQとSに書き込んであります。
なぜ=なのにマクロでは一方のセルに数を書き込んでいるのでしょうか。
また、QやSをUやVへ書き込んでいないのでしょうか。

どなたか詳しく教えていただけると幸いです。

マクロの作りと理解の方法について教えてください。

今、日報を作り直しています。
以前作成した方は、このように作っていました。


Worksheets("日報").Select
Range("Q7:Q23").Value = Range("U7:U23").Value
Range("S7:S59").Value = Range("V7:V59").Value
Range("A1").Select
MsgBox " 転写を終了しました。"
End Sub


マクロでは複数の行列を指定していますが、1行だけ表すと、
具体的な表とデータの変化の仕方とするとこのようになっています。

M    O    Q     S...続きを読む

Aベストアンサー

プログラミング言語では、一般的に、
「=」は、右辺から左辺への「代入」
を意味します。

マクロ = Visual Basic = プログラミング言語
なので、Excelにおける「=」とは少し意味合いが違っています。

Qshellスクリプトから別のshellスクリプトを呼び出す方法

今現在VineLinux4.1をサーバとして起動させております。
その関係もありまして維持としてシェルを動かす事はある意味必須の状態です。
本題はAと言うスクリプトからBと言うスクリプトを呼び出す方法がわかりません。
試してみた方法はsourceで呼び出す方法です。
A.shの中身を以下とすると

#!bin/bash
echo ="B.shを呼び出します"
source B.sh
echo ="シェルスクリプトを終了します"
exit 0

上記のようにした場合、最初のecho文は出力され、B.shの内容を一通り終えると最後のechoは出力されずA.shは完了しません。
ごくごく基本的なことかもしれませんが、うまく検索にも引っ掛けられなかったので、ご質問させていただきます。
よろしくお願い致します。

Aベストアンサー

#2です。

>cshは=の前後にスペースが入るかと思いますが、今回はbashを指定しておりますので。

cshの何のことを言ってるのかわかりませんが、例えばbashで、
echo="シェルスクリプトを終了します"
は、echoコマンドじゃなくて、echo というシェル変数に「シェルスクリプトを終了します」という文字列をセットするコマンドになります。当然何も表示されません。

>A.shとB.shは単独で正常に稼動できる状態です。

B.shが単独で正常に動いているように思えることは、B.shに問題がないことを意味しません。
例えば、B.sh をexitで終了したりするとそこでbashは終了するわけだし。

>質問の例はあくまで例ですが、

書かれているA.shに問題がなさそうなので、B.shの中に原因があると想像しました。
現象が発生する最小限の、A.sh と B.sh の内容をすべて正確に書いてください。

今気づきましたが、A.sh の最後に無意味なexit 0がありますが、もしかして、B.shの最後にもexit 0が?

source コマンドは、その場所に指定したファイルの内容を挿入するコマンドです( C の #include 相当 )。もし、新たにbashプロセスを起動して、そこでB.shを動かしたいなら、
bash B.sh
です。他には#1の方が書いた方法もあります。

#2です。

>cshは=の前後にスペースが入るかと思いますが、今回はbashを指定しておりますので。

cshの何のことを言ってるのかわかりませんが、例えばbashで、
echo="シェルスクリプトを終了します"
は、echoコマンドじゃなくて、echo というシェル変数に「シェルスクリプトを終了します」という文字列をセットするコマンドになります。当然何も表示されません。

>A.shとB.shは単独で正常に稼動できる状態です。

B.shが単独で正常に動いているように思えることは、B.shに問題がないことを意味しませ...続きを読む


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

人気Q&Aランキング